Centos 7では、あるディレクトリの最新のファイルを別のディレクトリに移動するスクリプトを作成しています。コピーした元のディレクトリには有効なファイルが含まれていますが、ファイルを移動またはコピーしようとすると、ファイルが存在しないというエラーメッセージが表示されます。以下に示すように、ファイルが存在することを知っています。なぜ失敗し、それを解決するにはどうすればよいですか?
シェルのスクリプトでこの行を実行すると、期待$(
どおりに出力が変数に展開されます。
NEW=$(ls -Art /home/user/directory/ | tail -1)
次のように変数値をエコーすることで、それを自分で証明できます。
echo $NEW
file.tar.gz
その後、ファイルを別のディレクトリに移動してみました。
mv $NEW /usr/local/directory/
..ここでエラーが発生します。エラーメッセージでは、見つからないファイルの名前を明示的に指定します。
mv: 'file.tar.gz' を計算できません: そのファイルまたはディレクトリがありません
シェルは、ファイルが見つからないと通知し、見つからないファイルの名前を指定します。
バックティックを括弧で置き換えようとしましたが、同じ結果が得られました。私はファイルとその上のディレクトリに対する権限を私が考えることができるほとんどすべての順列に変更し、所有権をuser.userに変更してみました。
rootとユーザーでコマンドを実行してみましたが、毎回同じ結果が得られました。この問題の解決にご協力いただきありがとうございます。
ベストアンサー1
ファイルがあるディレクトリにないようです。
あなたは使う
ls -Art /home/user/directory/
ディレクトリ部分ではなくファイル名部分のみを返します。
移動コマンドは次のようにする必要があります。
mv "/home/user/directory/$NEW" /usr/local/directory/