mv:セルスクリプトには対応するファイルまたはディレクトリがありません。

mv:セルスクリプトには対応するファイルまたはディレクトリがありません。

一部のファイルをあるフォルダから別のフォルダに移動するスクリプトを作成しましたが、次のエラーが発生します。 2つのフォルダを確認したところ、1つのフォルダにはそのファイルがあり、他のフォルダにはそのファイルがないことがわかりました。しかし、すべてのフォルダに表示されるのはなぜですか? 「mvはそのようなファイルやディレクトリを計算できません」

mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/194.199.68.165_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/194.42.17.124_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/195.113.161.13_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/203.159.127.3_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/212.199.61.205_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/212.51.218.235_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/213.73.40.105_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/41.225.7.4_tcp.folder/data/*': No such file or directory
mv: cannot stat `/home/esolve/project/capture/tcp_50x50/dest_folder/83.230.127.122_tcp.folder/data/*': No such file or directory
[esolve@kitty tcp_50x50]$ ls /home/wgong/project/capture/tcp_50x50/dest_folder/194.199.68.165_tcp.folder/
[esolve@kitty tcp_50x50]$ ls /home/wgong/project/capture/tcp_50x50/dest_folder/203.159.127.3_tcp.folder/data/
129.88.70.226   132.187.230.1    138.96.116.22   155.185.54.250   192.38.109.144  193.136.227.163  193.175.135.61  195.113.161.13  83.230.127.122
130.104.72.200  132.227.62.122   147.83.29.232   156.17.10.52     192.42.43.22    193.137.173.218  193.205.215.74  212.199.61.205
131.130.69.164  132.252.152.194  148.81.140.193  157.181.175.249  192.43.193.71   193.144.21.131   193.226.19.30   212.51.218.235
131.188.44.102  134.151.255.180  152.66.245.162  160.78.253.31    193.1.170.136   193.145.46.243   194.199.68.165  213.73.40.105
131.254.208.10  138.48.3.203     152.81.47.4     192.114.4.3      193.136.166.56  193.166.160.98   194.42.17.124   41.225.7.4

スクリプトは次のとおりです。

list=`ls dest_folder`
cd dest_folder
cwd=`pwd`
for folder in $list;do
        mv ${cwd}/${folder}'/data/*' ${cwd}/${folder}
done

私はそれを走った/home/esolve/project/capture/tcp_50x50/

ベストアンサー1

mv ${cwd}/${folder}'/data/*' ${cwd}/${folder}

そこにある引用符()'は、シェルがワイルドカードを使用するのを防ぎます。コマンドはそのまま渡されますが、表示され*たディレクトリに呼び出さmvれたファイルが見つからないため失敗します。*

次に変更してください。

mv "${cwd}/${folder}/data"/* "${cwd}/${folder}"

(ディレクトリ名にスペースが含まれている場合は、問題を回避するために二重引用符を使用してください。*引用符の外側。)

ただし、空のディレクトリではまだエラーが発生します。 (同じ理由:ファイルがパターンと一致するものを見つけられない場合は、パターン自体をコマンドに引数として渡します。)

おすすめ記事