При вызове программы с подстановочным символом, оболочка, которую вы используете, попытается расширить этот символ и дать расширенные имена файлов в качестве аргументов исполняемому файлу. Если он не может быть расширен, оболочка выдаст процессу подстановочные знаки в виде имён файлов.
Смотрите следующий вывод strace
(файлы существуют):
user@host:~$ mv test* /tmp/
execve("/bin/mv", ["mv", "test", "test1", "test2", "test3", "/tmp"], [/* 19 vars */]) = 0
Теперь этот вывод strace
(файл, соответствующий подстановочному знаку, не существует).
user@host:~$ mv test* /tmp/
execve("/bin/mv", ["mv", "test*", "/tmp/"], [/* 19 vars */]) = 0
При перемещении файла с помощью mv
, программа mv
сначала пытается получить статус этого файла. Это было сделано с помощью системного вызова stat
(см. man 2 stat
). Если статус файла (или нескольких файлов в вашем случае) не может быть собран, процесс mv
не может быть продолжен.
Во втором случае, системный вызов статистики не удается:
lstat("test*", 0x7fff20d26490) = -1 ENOENT (No such file or directory)
Вырезать короткое изложение длинной истории: Нет файлов, которые соответствовали бы утверждению ACQ*.err
.
Возможно, что вы можете помочь вам:
enter code here
mv <file.a>...<file.n> <new_folder>
zip -r <new_folder>
mv new_folder.zip /destination_folder
cp -R (the path of the folder to copy) (the name of the copied file)
, затем
zip -r (name your zip) (the name of the copied file)
Пример сценария :Допустим, я хочу скопировать плагины установки WordPress и после этого заархивировать их (, пока я нахожусь в корневой папке WordPress ).
Я сделаю:
cp -R wp-content/plugins plugins_backup
тогда для проверки сделаю:
ls -la
Я увижу новый каталог plugins _backup и заархивирую:
zip -r plugins_backup.zip plugins_backup
готово. (затем следуйте ответу mv, чтобы переместить его куда угодно ).
Почему-то все это время я не знал о подключаемом модуле FUSE -для поддержки ZIP-файлов. Это позволяет пользователю монтировать (или создавать )ZIP-файл, как если бы это была файловая система для чтения/записи.
Сначала создайте новый (пустой )файл с расширением.zip и смонтируйте его в /mnt. Поскольку вы хотите, чтобы ZIP-файл в конечном итоге оказался в папке _B, мы создадим его там :
.# rm -f /folder_B/my_files.zip
# fuse-zip /folder_B/my_files.zip /mnt
Ваше сообщение неясно, но похоже, что вы хотите, чтобы файл.ZIP содержал папку _C, а затем все ваши файлы находились там. Итак, мы создадим папку _C внутри ZIP-файла, который находится в /mnt :
.# mkdir /mnt/folder_C
Теперь вы можете просто зайти в папку _A и переместить все файлы, которые вы хотите заархивировать, в /mnt/folder _C:
# cd /folder_A
# mv file1 file2... fileN /mnt/folder_C
Наконец, размонтируйте и проверьте ZIP-файл:
# umount /mnt
# unzip -v /folder_B/my_files.zip
Я понимаю, что это выглядит запутанно, но основные четыре шага:
# fuse-zip /folder_B/my_files.zip /mnt
# mkdir /mnt/folder_C
# mv /folder_A/file1 /folder_A/file2... /folder_A/fileN /mnt/folder_C
# umount /mnt
Я не имею в виду, что этот метод лучше или хуже, чем другие решения, просто это другой способ сделать это. Надеюсь, вам будет интересно.