Просто используйте find
в цикле Bash для изменения вывода.
Дано:
$ ls -1
file 1
file 2
file 3
file 4
file 5
Вы все еще можете выполнить цикл и отрицание с помощью find
по желанию.Просто используйте Bash, чтобы удалить и сообщить:
$ find . ! -name *3 -type f | while read fn; do echo "removing: $fn"; rm "$fn"; done
removing: ./file 1
removing: ./file 2
removing: ./file 5
removing: ./file 4
$ ls -1
file 3
Этот цикл будет работать для имен файлов с пробелами, ЧЕМ \n
.
Если существует возможность имен файлов с \n
вих, используйте xargs
с NUL
разделителем:
$ find . ! -name *3 -type f -print0 | xargs -0 -n 1 -I% bash -c ' echo "%" ; rm "%" ;'
и добавьте заголовок echo "removed files:"
над петлей или xargs
трубу по желанию.