#bash #find
#bash #Найти
Вопрос:
Как мне убедиться, что после имени файла в есть число find
? Концептуально:
find ./directory -name filename{number}.temp
Если я введу
find ./directory -name filename'[0-9]'*.temp
это также даст мне имена файлов формы filename'[0-9]'text.temp
.
Комментарии:
1. Вы были очень близки к цели, но ваши кавычки были не того типа и не в том месте, попробуйте
find ./directory -name "filename[0-9]*.temp"
Ответ №1:
find ./directory -regex '.*/filename[0-9][0-9]*.temp'
Обратите внимание, что -regex
совпадения по всему пути, а не только по имени файла.
Ответ №2:
Более старые версии Unix find
не используют регулярные выражения или глобусы в стиле Kornshell. Вы можете использовать либо «?», либо «*» в вашем глобусе, но это все. find
Команда на Linux и Mac имеет -regex
выражение.
Если ваша find
команда не совместима с gnu и не имеет -regex
параметра, вам необходимо передать выходные данные в grep
:
find ./directory -name 'filename*.temp' | grep '/filename[0-9].temp$'
Комментарии:
1. Ты имеешь в виду
grep '/filename[0-9][0-9]*.temp$'
?2. @RolandIllig — Я изначально не думал, что это необходимо, но вы правы. У меня мог бы быть каталог
foo/filename23.temp/filenamefoo.temp
, который соответствовалgrep
бы, но не был правильным файлом. Я изменил свой ответ, чтобы включить ваши предложения.