Как удалить файлы в каталоге и подкаталогах, но не в папках?
Я должен быть в состоянии сделать это в командной строке Linux.
С rm
?
Как удалить файлы в каталоге и подкаталогах, но не в папках?
Я должен быть в состоянии сделать это в командной строке Linux.
С rm
?
find
Используйте find
. Он найдет все файлы (т.е. не каталоги) в текущей папке. Если вы хотите убедиться, что не удалили неправильные данные, сначала позвоните.
find . -type f
Затем вы можете использовать опцию exec
чтобы что-то сделать с этими файлами - в этом случае их rm
.
find . -type f -exec rm {} \;
find
трубку в xargs
Вы также можете использовать вывод find
для подачи в xargs
, который будет принимать пути к файлам в качестве аргументов для команды rm
.
find . -type f -print0 | xargs -0 rm
Опция -print0
необходима, чтобы не разбивать вещи именами файлов, содержащими пробелы. Как правило, не используйте такую вещь без этой опции, это крайне небезопасно.
find
В GNU find
также есть опция delete
. Это намного эффективнее, чем способ exec
так как не нужно создавать новый процесс с помощью rm
. Это также более безопасно при рассмотрении путей к файлам.
find . -type f -delete
В руководстве по поиску GNU есть очень обширный раздел по удалению файлов.