2017-01-15 3 views
1

Мне нужно использовать сценарий оболочки для перемещения всех файлов в каталог в другой каталог. Я вручную сделал это без проблем, и теперь скриптинг дает мне ошибку в команде mv.shell script mv бросает бесполезную ошибку «Нет такого файла или каталога», хотя я вижу его

Внутри каталога я хочу переместить файлы из двух каталогов, php и php.tmp. Ошибка, которую я получаю, - cd: /path/to/working/directory/php: No such file or directory. Я в замешательстве, потому что он там начинается и отображается, когда я работаю в рабочем каталоге.

Я получаю ошибку здесь:

ls $PWD #ensure the files are there 
mv $PWD/* /company/home/directory 
ls /company/home/directory #ensure the files are moved 

Когда я использую ls $PWD Я вижу, каталоги, я хочу двигаться, но ошибка потом говорит, что это не существует. Тогда, когда я ssh на машине, это работает, я вижу, что файлы были перемещены правильно.

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

Я не понимаю, почему я получил бы эту ошибку, поэтому любая помощь будет отличной.

+0

Что произойдет, если вы просто делаете 'мВ $ PWD/PHP/компании/дома/directory'? – 123

+0

Вы упомянули ssh'ing на машине, на которой работает, - этот сценарий запускается удаленно или что-то в этом роде, и если да, то как? –

+0

Как вы оцениваете свой сценарий? – Jdamian

ответ

0

Правильно ли указаны ваши переменные? Вы можете попробовать:

ls "$PWD" #ensure the files are there 
mv "$PWD"/* "/company/home/directory" 
ls "/company/home/directory" #ensure the files are moved 

Если какой-либо из ваших имен файлов или каталогов содержит символы, такие как пробелы и вкладки, ваша команда «мв» не может видеть список аргументов, вы думаете, он видит.

+0

Если вопрос цитируется, 'ls' должен иметь ту же проблему, что и' mv'. – chepner

+0

Цитирование не должно иметь значения, если не выводить это право? В любом случае, я пробовал ссылаться на переменную, но не повезло. –

+1

Цитата всегда важна. Предположим, что у вас есть каталог с именем «/ my directory» (с пробелом). попытка «mv somefile/my directory» не будет работать. Даже если это не имеет никакого отношения к вашей текущей проблеме, вы всегда должны указывать переменные, содержащие имена файлов, при их расширении. Команда «ls» не имеет globbing, «mv» делает, поэтому ничто не говорит, что обе должны иметь одинаковую проблему. – Fred

1

Добавить путь / после того, как вы указали, что хотите переместить файл, а не переименовывать его.

Вы должны попробовать это:

mv $PWD/\* /home/user/directory/ 
+0

Это избавило от сообщений об ошибках, но mv все еще не работает –

Смежные вопросы