Удалить все файлы в папке, имеющие временную метку в имени файла

Удалить все файлы в папке, имеющие временную метку в имени файла

Мне нужно удалить все файлы в папке, имена которых имеют 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
"

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