Как правило, у вас есть несколько способов достичь этого:
rm fileName_{100..100000}
будет расширяться оболочкой примерно в 100 000 имен файлов. Если basename длинный путь и число достаточно высокое, вы можете фактически превысить максимальную длину командной строки при таком подходе.
Цикл for
for i in $(seq 100 100000); do rm fileName_$i; done
[d3 ] не страдает от этой проблемы, но является относительно медленным способом удаления файлов, поскольку оболочка должна выполнить замену переменных и запуск rm около 100 000 раз. Оба вышеописанных метода могут вызывать предупреждения, если некоторые файлов, скажем, filename_101.
Обычно решения, основанные на find, лучше, поскольку они работают только с файлами, которые на самом деле там (во время обнаружения). Однако есть некоторые тонкие отличия:
find . -name 'fileName_[100-100000]' -exec rm {} \;
все равно запустит программу rm около 100 000 раз, а при замене окончательного \; на + попытается свести к минимуму количество подпроцессов. Оба метода, вероятно, будут (много или немного) медленнее, чем использование -delete, которое вообще не использует внешние команды, но вместо этого вызывает системные вызовы.
Однако всегда проверяйте сначала, действительно ли шаблон соответствует файлам что вы хотите настроить таргетинг:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
Итак, в этом случае вы должны удалить файл, который хотите сохранить, и оставить файлы, которые должны были быть удалены.
Это очень просто. Просто введите
sudo su
вместо
sudo su - root
Это сохранит вас в той же папке, что и root.