5

Как удалить файлы в каталоге и подкаталогах, но не в папках?

Я должен быть в состоянии сделать это в командной строке Linux.

С rm?

1 ответ1

2

Традиционная 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 необходима, чтобы не разбивать вещи именами файлов, содержащими пробелы. Как правило, не используйте такую вещь без этой опции, это крайне небезопасно.

GNU find

В GNU find также есть опция delete . Это намного эффективнее, чем способ exec так как не нужно создавать новый процесс с помощью rm . Это также более безопасно при рассмотрении путей к файлам.

find . -type f -delete

В руководстве по поиску GNU есть очень обширный раздел по удалению файлов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .