Я собрал скрипт, чтобы сделать некоторые файловые операции для меня. Я использую подстановочный оператор *для применения функций ко всем файлам типа, но есть одна вещь, которую я не понимаю. Я могу unzipвсе файлы в папке, как это
unzip "*".zip
Тем не менее, чтобы удалить все почтовые файлы впоследствии, мне нужно сделать
rm *.zip
То есть он не хочет кавычек. Разархивирование, с другой стороны, не работает, если я просто даю ему * (предупреждает, что «файлы не были сопоставлены»).
Почему это отличается? Мне кажется, это точно такая же операция. Или я использую подстановочный знак неправильно?
Знакомство с подстановочным знаком в Unix на самом деле не относится к этому, и я не смог найти что-либо в rmили zipдокументах.
Я использую терминал на Mac (Yosemite).
unzipприменяет глобус к содержимому архива; вы не можете получить их из Bash с подстановочным знаком. (Вам нужно `` для f in unzip -l archive.zip; do ... done`)
unzipчто глобусы должны совпадать внутри одного zip-файла. Но это другое; Я на самом деле пытался unzip '*.zip'в каталоге с несколькими файлами ZIP, и он извлекает все файлы из всех ZIP. Как я уже сказал, супер странно. tarне имеет никакого режима работы, подобного этому.
unzipмог бы сделать это без обычногоfor f in *.zip;do...doneцикла оболочки. Такой странный не-Unix-подобный интерфейс командной строки.