Удалить много-много-много файлов из папки

Удалить много-много-много файлов из папки

У меня есть папка с 137795 файлами. Мне нужно удалить их все. Когда я запускаю, rm *я получаю -bash: /bin/rm: Argument list too long. Как мне обойти эту ошибку?

решение1

Как я вижу, вам не нужно удалять ваш каталог, только файлы внутри. Так что вы можете создать его заново

rm -r /path/to/dir && mkdir /path/to/dir

или даже удалить только файлы внутри

find /path/to/dir -type f -delete

первый вариант работает быстрее.

UPD. Обратите внимание, что способ с findможет быть не оптимальным с точки зрения потребления места, так как размер каталога будет уменьшен только после fsck.Подробности.

решение2

Обходной путь №1:

find /path/to/dir -delete

Обходной путь №2:

rm a*;

rm b*;

rm c*;

etc

решение3

Использование find, вероятно, является лучшим вариантом. Некоторые проблемы с другими ответами либо не удаляют все внутри каталога, либо удаляют сам каталог. Вы можете использовать либо lsс xargs, если нет специальных символов, либо findс определенными параметрами.

ls -1 | xargs rm -r

или

find . -depth -path ./.* -prune -o -not -name . -delete

Это проигнорирует все в текущем каталоге, начинающееся с .( -prune), и удалит любой другой файл или каталог, если только это не верхний каталог ( .). -depthСначала будет выполнен поиск внутри каталогов, что позволит избежать ошибки «каталог не пуст». Если аргумент -notнедоступен в вашей системе, используйте !.

Связанный контент