Мне нужно рекурсивно удалить все файлы во всех подкаталогах, где имя файла содержит число, за которым следует «x», за которым следует число, как минимум два раза.
Пример:
Я хотел бы удалить эти файлы:
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
Но я не хочу удалять эти файлы:
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
Как я могу это сделать (из оболочки Bash)
-delete
не-exec rm
работал для меня. Но это сделал:find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' | xargs rm
-print0
иxargs -0
, в противном случае команда не будет работать с именами файлов, содержащими пробелы или одинарные кавычки. Но-delete
и-exec rm
сделать работу на Windows. Если что-то не работает, это не из-за их использования.find
, поэтому убедитесь, что утилиты Unix стоят первымиPATH
.Правильная команда:
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
он будет захватывать только файлы с именами: «aaa-12x12.jpg», но не «aaa-12x12red.jpg»
источник