2017-01-15 27 views
1

ディレクトリ内のすべてのファイルを別のディレクトリに移動するには、シェルスクリプトを使用する必要があります。私は手動でこれを問題なく実行しましたが、スクリプトを作成するとmvコマンドでエラーが表示されます。シェルスクリプトmvは役に立たないエラー "No such file or directory"を表示します。

ファイルを移動したいディレクトリの中には、2つのディレクトリ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を実行しているときに私はファイルが正しく移動されて参照してください。

私が移動しているディレクトリが重要な場合、ファイルは別のユーザーが所有していますが、シェルはルートとして実行されています。

私はこのエラーが発生する理由を理解できません。どんな助けも素晴らしいでしょう。

+0

どうなりますか? – 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 

を、あなたの「MV」コマンドを使用すると、それが見ていると思う引数リストを見ることはできません。

+0

引用が問題であれば、 'ls'は' mv'と同じ問題があります。 – chepner

+0

引用符はその権利を出力しない限り重要ではありませんか?とにかく、私は変数を引用しようとしましたが、運はありません。 –

+1

引用符は常に重要です。 「/ my directory」という名前のディレクトリがあるとします(空白を含む)。 "mv somefile/my directory"を試しても動作しません。これがあなたの現在の問題とは関係ない場合でも、ファイル名を含む変数を展開するときには常に引用する必要があります。 "ls"コマンドにはグロビングはありません。 "mv"はそうするので、どちらも同じ問題があるはずです。 – Fred

1

パスの後に/を追加して、ファイルの移動を指定し、ディレクトリの名前を変更しないように指定します。

あなたはこれを試してみてください:あなたはちょうど `MVの$ PWD/PHP /会社/ホーム/ directory`をすれば

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

これはエラーメッセージを取り除きましたが、mvはまだ失敗します –

関連する問題