Я должен удалить 200 000 файлов (все они) из папки, и я не хочу удалять саму папку.
используя rm, я получаю сообщение об ошибке «Список аргументов слишком длинный». Я пытался что-то сделать с xargs, но я не парень из Shell, поэтому он не работает:
find -name * | xargs rm -f
Ответы:
источник
-delete
. Это также позволяет избежать проблем с файлами, содержащими кавычки или символы новой строки (хотя вы можете использовать опции GNU find-print0
и GNU xarg,-0
чтобы это исправить).xargs
темfind
имеет-exec command {} +
синтаксис.Вы все делаете правильно. Это '*' создает проблему (оболочка расширяет ее в список файлов вместо
find
). Правильный синтаксис может быть:(Последнее немного менее эффективно, поскольку оно будет передавать более длинные имена
xargs
, но вы вряд ли заметите :-))В качестве альтернативы, вы можете экранировать ваш '*' следующим образом (однако в этом случае он также попытается также удалить "." И ".."; это не важная персона - вы просто получите небольшое предупреждение :-)):
Если ваши имена файлов содержат пробелы, используйте это:
источник
Следующая команда удалит все файлы из текущего каталога:
источник
-name '*'
не означает "все файлы".-type f
можешь попробовать
или
источник
Слава к количеству ответа, вот некоторые дополнения.
Если вы хотите удалить файлы с определенным шаблоном имени, вы можете написать это так. Также добавлен -print, чтобы вы могли видеть, что происходит при удалении файлов.
Это, например, удаляет все JPEG в mydirectory.
источник