Едва ли, как насчет чего Вы попросили, но использовать, "разархивировали весь" сценарий вместо.
unzip *.zip
Тем путем вывод из каждого файла входит в свой собственный каталог.
#!/bin/bash
for f in *.zip ; do unzip -n "$f" -d "${f/%zip/out}"; done
Используйте find
команда.
Найдите все файлы (рекурсивно) соответствующие regex: find . -type f -regex '/ex/'
Найдите все файлы (рекурсивно) соответствующие regex, и удалите их: find . -type f -regex '/ex/' -exec rm {} \;
Скобки хранят найденный путь, и обратная косая черта выходит из точки с запятой, потому что это передается для нахождения; не выходя из него, он был бы использован оболочкой. Если это пробежалось через Вашу голову, прочитайте первые две главы "Изучения Bash Shell".
Проверьте страницы справочника на find
для большего количества опций. Существует намного больше способов искать.
Очень похожий на ответ jorelli. Это - то, что я использую:
find . -regex '/ex/' -print0 | xargs -0 rm
-print0
и -0
причина аргументов находит для вывода символа 0 разделенных списков и xargs для выполнения rm
команда в каждом элементе списка, таким образом, пути с пробелами не являются проблемой.
rm $(find . -regex '/ex/')
– phunehehe 22.08.2010, 19:27rm '{}' +
+ больше xargs как поведение или что-то... действительно все, что я помню, то, что это более эффективно, чем выполнение\;
. – xenoterracide 22.08.2010, 19:54rm $(...)
это, это не будет работать, если какие-либо из имен файлов будут содержать пробельные символы или globbing символы\\[*?
, потому что оболочка разворачивает их после замены$(...)
. – Gilles 'SO- stop being evil' 22.08.2010, 23:50