
Я пытаюсь запустить sh fizmyzip.sh
удаление некоторых ненужных файлов из всех zip-файлов в моей текущей папке. fizmyzip.sh
Это:
zip -d *.zip __MACOSX/\*
zip -d *.zip "*/.DS_Store"
Однако, он не может соответствовать a-b.zip
, просто ab.zip
. Как это исправить?
решение1
Оболочка расширяется *.zip
до ab.zip a-b.zip
, поэтому команды становятся
zip -d ab.zip a-b.zip __MACOSX/\*
zip -d ab.zip a-b.zip "*/.DS_Store"
В аргументе после -d
флага должен быть только один целевой zip-файл. Остальные аргументы — это файлы/шаблоны, которые нужно удалить. Вот почему это работает только для ab.zip
.
Поэтому используйте цикл for:
for zipf in *.zip; do zip -d "$zipf" "__MACOSX/*" "*/.DS_Store"; done