二重引用符を使用してコピーされたファイルにアクセスすることはできません。

二重引用符を使用してコピーされたファイルにアクセスすることはできません。

cpコマンドを使用して、誤って100個のファイルをコピーしました。

$ cp file1 "/data/ file1"
$ cp file2 "/data/ file2"

注:- / dataとfile2、file1の間にスペースがあります。

/ dataディレクトリにファイルを表示できますが、コピーまたは移動することはできません。これらのファイルへのアクセス/コピー/移動中にファイルが見つかりませんエラーが発生します。

$ cd /data/ ; ls
file1 
file2
$ cp file1 /data1/
can not stat file1 

問題を解決する方法。

答え1

使用できるワイルドカード問題に一致するファイルを選択してください。例:

 for f in ./*file?
 do
   echo "[$f]"
 done

答え2

スペースは問題なので、ファイル参照でスペースをエスケープする必要があります。すべてのファイルを一度に回復するには(シェルによって異なります - 少なくともBashで動作します):

for FILE in /data1/" "* ; do mv "${FILE}" "${FILE# }" ; done

答え3

cpスペースはファイル名の一部であるため、またはを使用するときはファイル名にスペースを含める必要がありますmv

mv " file1" /data1/

または、そのスペースを取り除く方が良いです。

mv " file1" /data1/file1

すべてのファイルに対してこれを一度に実行するには、Perlの名前変更ツールを使用します。複数の名前変更ツール)

prename -n 's#^ #/data1/#' " file"*

-n結果が満足であれば削除してください)

関連情報