![Удалить все файлы в папке, имеющие временную метку в имени файла](https://rvso.com/image/164724/%D0%A3%D0%B4%D0%B0%D0%BB%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20%D0%B2%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B5%2C%20%D0%B8%D0%BC%D0%B5%D1%8E%D1%89%D0%B8%D0%B5%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%D0%BC%D0%B5%D1%82%D0%BA%D1%83%20%D0%B2%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0.png)
Мне нужно удалить все файлы в папке, имена которых имеют fcrjlog-11-21-2019-1.txt
формат. Я хочу удалить все файлы с таким именем в папке.
решение1
find . ! -type d -name 'fcrjlog-??-??-????-?.txt' -delete
(замените -delete
на -exec rm -f {} +
, если ваш find
не поддерживает нестандартное -delete
расширение).
?
это подстановочный оператор, который обозначаетлюбой отдельный символ. Заменить на [[:digit:]]
для соответствия только символам десятичных цифр (0123456789).
! -type d
исключает файлы типакаталог(которые -delete
не могут быть удалены, если они не пусты в любом случае), вы можете заменить на , -type f
чтобы сделать их еще более ограничивающими (включить толькообычныйфайлы, за исключением всех других типов файлов, включая символические ссылки, каталоги, сокеты, fifo, устройства...). GNU find
также поддерживает -xtype f
выбор файлов, которые определены какобычныйпосле разрешения символической ссылки.
Заменить fcrjlog
на *
для соответствия любому количеству символов или ?*
любой непустой последовательности символов или [!.]*
любой непустой последовательности символов, первый из которых не является .
(для исключения скрытых файлов).
решение2
Обычно выставляются некоторые из вещей, которые вы уже пробовали — так вы получите больше ответов. Для этого вопроса вам нужно поискать регулярные выражения и понять некоторые концепции. Я предполагаю, что «x» в ваших временных метках — это числа? Если так, то это регулярное выражение поможет вам начать:
/tmp>ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$"
test-12-12-1234-9.txt
/tmp>rm $(ls | grep -E "[0-9]{2}\-[0-9]{2}\-[0-9]{4}\-[0-9]{1}.txt$")
Разбираем на части:
"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{2} -- Exactly two numeric characters
- -- A literal dash "-"
[0-9]{4} -- Exactly four numeric characters
- -- A literal dash "-"
[0-9] -- One numeric character
. -- Any character. Use \. to insist on a dot
txt -- The literal string "txt"
$ -- An anchor that means the txt has to be at the end of the line
"