Файл существует, но ошибка mv: «mv: cannot stat 'file.tar.gz': Нет такого файла или каталога»

chroot не является контейнером и не изолирует процесс полностью от остальной системы. Если вы смонтируете / proc в вашем chroot-каталоге, процесс, запущенный в этом chroot-каталоге, сможет видеть процессы, выполняющиеся за пределами вашего chroot-каталога.

Тем не менее, если вы не возражаете, chroot разработан для обработки именно тех случаев, которые вы описываете. Фактически, до поддержки многоархитектурности в Debian рекомендуемый способ запуска 32-битных приложений в 64-битной системе заключался в создании 32-битного chroot и установке минимальной 32-битной базы Debian.

2
12.08.2015, 18:12
1 ответ

Если вы попробуете ls -Art /home/user/directoryотдельно, вы заметите, что он выводит только имена файлов без компонента пути к каталогу. Это означает, что в вашей переменной NEWотсутствует бит /home/user/directoryв начале пути к файлу.

Добавление этого к NEWзаставит вашу команду работать, предполагая «хорошие» имена файлов (без символов новой строки или других пробелов, или каких-либо подстановочных символов имени файла ), и предполагая, что вы счастливы принимать что угодно имя файла, которое выводит tail, даже если это имя каталога.

Лучший способ решить вашу проблему с перемещением самого последнего измененного обычного файла из каталога в другой — использовать оболочку zsh:

mv /home/user/directory/*(.Dom[1]) /usr/local/directory

(.Dom[1])— это квалификатор подстановки, который заставляет предыдущий шаблон соответствовать только обычным файлам (.), делает возможным соответствие скрытым именам (D, действует как параметр оболочки dotglobв bash), упорядочивает результирующие list по метке времени модификации(om)и выбирает первый элемент из отсортированного списка ([1]).

Из bashили любой другой оболочки:

zsh -c 'mv /home/user/directory/*(.Dom[1]) /usr/local/directory'
0
12.02.2021, 10:59

Теги

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