2017-10-08 5 views
0

フォルダ名を含むテキストファイルの内容を読み込み、そのディレクトリから特定のフォルダに移動するスクリプトが必要です。それがエラーを与える他のフォルダのようテキストファイルからファイル名を読み取ってファイルをディレクトリから移動します。

 #!/bin/bash 
    for i in $(cat /folder/collected/folders.txt) 
     do 
     mv /fromfilelocation/$i /folder/Collected/ 
     done 

は、このスクリプトは、部分的に、テキストファイル内の最後のフォルダがコピーとして働いている「ではない可能性:見つからないデータやディレクトリ」しかし、ここに私のスクリプトですフォルダが存在し、エラーに応じてフォルダディレクトリが正しく表示されます。 名前には特殊文字や空白が含まれていません。また、テキストファイル内に完全なディレクトリまたはフォルダ名のみがある場合は、同じエラーになります。 表示されているエラーは、ファイルまたはディレクトリを見つけることができませんが、フォルダに '$' \ r 'という正しいディレクトリを表示します。例/ fromfilelocation/foldername '$' \ r。

+0

あなたのコードはここでは絶対パスを使用することを意図しています。そして、 '/ folder/collected /'は '/ folder/Collected /'と同じですか?大文字小文字? – Klaus

+0

ファイル名に空白が含まれていないことを確認し、スクリプトの最初の行に 'IFS = $ '\ n'' –

+0

と書かれている場合、' folders.txt'にはウィンドウの行末があります。 '\ r'文字をテキストファイルから削除する必要があります。 forループを使用してファイルから読み込むことはしないでください。http://mywiki.wooledge.org/DontReadLinesWithFor – fd0

答えて

0

これは改行文字のためのエラーです。ディレクトリ名のファイルに対してdos2unixを実行し、スクリプトを再度実行します。スクリプトに何も問題はありません

+0

ありがとう、私はdos2unixでテキストファイルを変換してテストしましたスクリプトとそれが働いた。 – mido

関連する問題