У меня много txt-файлов, названных как file1.txt file2.txt file3.txt ... file1000.txt
Как удалить все эти файлы? Я новичок в unix и беспокоюсь о том, что могу случайно удалить другие файлы в своем каталоге.
Я посмотрел другие вопросы, но не уверен, могу ли я сделать что-то вроде
rm -v !("differentfile"|"anotherfile"|"otherfile"|"finalfile")
и поэтому удалить все мои файлы с одинаковым именем и просто разными номерами и оставить несколько нужных мне? И эта строка должна удалять только файлы в моем рабочем каталоге/папке, верно?
Есть ли способ использовать rm, но только определенные файлы, которые я хочу удалить сразу?
решение1
rm file*.txt
удалит все файлы в текущем каталоге, имена которых начинаются со строки file
и заканчиваются на строку .txt
.
Если естьмногоиз них вы получите ошибку "Список аргументов слишком длинный". В этом случае вы можете использовать
find . -maxdepth 1 -name 'file*.txt' -delete
вместо.
Это будет использовать find
команду для поиска любого файла, имя которого совпадает file*.txt
в текущем каталоге, и удаления его. Опция -maxdepth 1
запрещает find
входить в любые подкаталоги, кроме .
(текущего каталога).
Команда не делает различий между файлами и каталогами (как и rm file*.txt
не делала бы ни того, ни другого). Если вы хотите быть уверены, что удаляете только обычные файлы, используйте
find . -maxdepth 1 -type f -name 'file*.txt' -delete
Для find
реализаций, не имеющих нестандартных -delete
и/или -maxdepth
опций, используйте
find . ! -path . -prune -type f -name 'file*.txt' -exec rm -f {} +
Или вы можете просто прибегнуть к простому, но медленному циклу:
for name in file*.txt; do
rm -f "$name"
done
решение2
Если других файлов с такой же структурой нет, используйте так называемый globbling с префиксом 'file'. Звездочка означает любую другую строку (включая пустую строку). Сначала проверьте с помощью 'ls' (список) вместо 'rm':
ls file*.txt
Вы также можете сузить это до как минимум одного числа после слова «file» и всего остального после него:
ls file[[:digit:]]*.txt
решение3
Если вы не уверены, будут ли в ваш шаблон включены другие файлы, вы можете, например:
переместите их в другую (временную) папку,
mv PATTERN
проверьте список файлов и, если все в порядке, удалите временную папку.используйте
rm -i PATTERN
. Вам придется подтверждать каждое удаление вручную.прежде чем сделать это,
rm
вы можете сделатьls PATTERN
илиecho PATTERN
и проверить, в порядке ли список.