В MacOSX *.zip не может соответствовать -b.zip просто ab.zip, как это исправить?

Я отвечаю за csh:

Да, вы можете использовать параметры в псевдонимах и -в отличие от сказанного выше -вы можете ссылаться на них в любом месте определения псевдонима -не только в конце.

Пример для tar -gz -ing something:

$ alias tgz "tar cvf - \!:1 | gzip -9 > \!:2.tar.gz"

, где !:1и !:2— параметры, которые вы указываете при вызове своего псевдонима.

Пример использования:

    $ ls
    clrcf.dat                             user_comment_2016.06.03_12:51:50.txt  user_comment_2016.06.03_12:54:48.txt
        TEST-wADM.tec                         user_comment_2016.06.03_12:52:04.txt  user_comment_2016.06.03_12:55:13.txt


    $ tgz user* out
    a user_comment_2016.06.03_12:51:50.txt 1K
a user_comment_2016.06.03_12:52:04.txt 1K
a user_comment_2016.06.03_12:54:48.txt 1K
a user_comment_2016.06.03_12:55:13.txt 1K

    $ ls out*
    out.tar.gz

Что фактически означает, что вы использовали два параметра, которые вы вставили в произвольные места команды tar, превратив все это в псевдонимtgz

0
06.08.2020, 14:09
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
4
18.03.2021, 23:14

Теги

Похожие вопросы