Zip warning name not matched

Я пытаюсь закрепить файл с помощью команды shell script. Я использую следующую команду:

где $FILES содержит все входные файлы. Но я получаю предупреждение следующим образом

и еще одна вещь, которую я заметил, что файл, который, наконец, находится в списке файлов в папке, имеет вышеуказанное предупреждение и этот файл не получает заархивированный файл.

Может ли кто-нибудь объяснить мне, почему это происходит? Я новичок в мире оболочки script.

zip warning: имя не соответствует: myfile.dat

Это означает, что файл myfile.dat не существует.

Вы получите ту же ошибку, если файл является символической ссылкой, указывающей на несуществующий файл.

Как вы говорите, какой бы ни был последний файл в $FILES , он не будет добавлен в почтовый индекс вместе с предупреждением. Поэтому я думаю, что что-то не так с тем, как вы создаете $FILES . Скорее всего, в конце последнего имени файла есть новая строка, возврат каретки, пробел, табуляция или другой невидимый символ, в результате чего чего-то не существует. Попробуйте это, например:

Я уверен, последняя строка будет неверной, например:

. или что-то вроде этого вместо :myfile.dat: без символов перед последним :

Если вы скажете, что script начал работать после запуска dos2unix на нем, это подтверждает то, о чем все подозревали, так как в конце вашего списка $FILES появился возврат каретки.

od -c показывает
возврат каретки. Попробуйте echo $FILES | od -c

Я пытаюсь сжать файл с помощью команды сценария оболочки. Я использую следующую команду:

где $ FILES содержит все входные файлы. Но я получаю предупреждение следующим

и еще одна вещь, которую я заметил, что файл, который находится на последнем месте в списке файлов в папке имеет вышеуказанное предупреждение, и этот файл не получает заархивированы.

Читайте также:  Как можно обойти пароль на телефоне андроид

Может кто-нибудь объяснить мне, почему это происходит? Я новичок в оболочку мира сценария.

застежка-молния предупреждение: название не соответствует: myfile.dat

Это означает , что файл myfile.dat не существует.

Вы получите ту же ошибку, если файл является символической ссылкой указывает на несуществующий файл.

Как вы сказали, что только последний файл на из $FILES , он не будет добавлен в почтовый индекс наряду с предупреждением. Так что я думаю , что что — то не так с тем , как вы создаете $FILES . Скорее всего , есть перевод строки, возврат каретки, пробел, табуляция, или другой невидимый символ в конце последнего файла, в результате чего — то , что не существует. Попробуйте это, например:

Я держал пари, что последняя строка будет неверной, например:

. или что — то подобное , что вместо того , чтобы :myfile.dat: без каких — либо символов до последнего :

ОБНОВИТЬ

Если вы говорите , что скрипт начал работать после запуска dos2unix на нем, что подтверждает то , что все подозревали уже, что — то там было возврат каретки в конце вашего $FILES списка.

od -c показывает г возврата каретки. Пытаться echo $FILES | od -c

I have a folder of around 180 GBs, I need to zip it like:

So how do I do this? On another note, archive.zip does not exist, but I’m trying to create it.

4 Answers 4

Your command should be:

The manual page ( man zip ), shows you should have:

Also, the -r option for recursion is highly recommended over the "*" shell glob for this.

This error can also be caused by symbolic links in the directory tree being compressed.

If these don’t have correct destinations (perhaps because the directory has been moved or copied from elsewhere), zip will attempt to follow the symlink to archive the target file.

Читайте также:  Что такое частотный диапазон колонок

You can avoid this (and also get the effect you probably want anyway, which is not to archive multiple copies of the file) by using the -y (or —symlinks ) option.

Use the recursive flag ( -r ) instead of glob ( * ) to match files to compress. In addition, specify the archive name first and then give the list of files:

I’ve also got this error in the past for a different reason which the -r switch cannot fix. What happened is that I based files to add to the zip with the following bash code/variable

The problem is that ls just lists the files off as if it were in the current directory and this is why zip is complaining (essentially the files do not exist to zip because it is being told to look in the wrong/current directory).

If this is your issue you can correct it like so:

As you can see I used the -d switch and also /* at the end of the directory name and then the files were successfully added.