
Как удалить файлы в каталоге, соответствующие заданному регулярному выражению, или найти похожее решение, используя терминал Mac?
решение1
Используйте find
команду.
Найти все файлы (рекурсивно), соответствующие регулярному выражению: find . -type f -regex '/ex/'
Найти все файлы (рекурсивно), соответствующие регулярному выражению, и удалить их:find . -type f -regex '/ex/' -exec rm {} \;
Скобки хранят найденный путь, а обратная косая черта экранирует точку с запятой, поскольку она передается find; без экранирования она будет поглощена оболочкой. Если это ускользнуло от вас, прочитайте первые две главы «Изучение оболочки Bash».
Проверьте man-страницы для find
получения дополнительных опций. Существует гораздо больше способов поиска.
решение2
Очень похоже на ответ jorelli. Вот что я использую:
find . -regex '/ex/' -print0 | xargs -0 rm
Аргументы -print0
и -0
заставляют find выводить список, разделенный символами 0, а xargs — выполнять rm
команду в каждом элементе списка, поэтому пути с пробелами не являются проблемой.