Bashで変数を使用して検索

Bashで変数を使用して検索

理解できない質問があります。シンプルで動作するはずですが、そうではありません。 =ターミナルで表示できる内容を編集しました=ファイル名のリストがあります。

[molni@archlinux picasa_album]$ cat LIST
IMG_9282.JPG
IMG_9287.JPG
IMG_9300.JPG
IMG_9324.JPG
IMG_9329.JPG
IMG_9463.JPG
IMG_9412.JPG
IMG_9562.JPG
IMG_9511.JPG
IMG_9607.JPG

findコマンドを使用して、リスト内のすべてのファイルとそのパスを検索しようとしています。

[molni@archlinux picasa_album]$ for i in `cat LIST`; do find /mnt/c/e-m10/  -name "$i";  done
[molni@archlinux picasa_album]$ 

結果はありません。 echo $i に置き換えると、変数 $i が正常であることを確認して動作します。

[molni@archlinux picasa_album]$ for i in `cat LIST`;do echo "$i" ;  done
IMG_9282.JPG
IMG_9287.JPG
IMG_9300.JPG
IMG_9324.JPG
IMG_9329.JPG
IMG_9463.JPG
IMG_9412.JPG
IMG_9562.JPG
IMG_9511.JPG
IMG_9607.JPG
[molni@archlinux picasa_album]$ 

これを手動で実行すると(ループなしで)変数を設定すると機能します。

[molni@archlinux picasa_album]$ i=IMG_9607.JPG
[molni@archlinux picasa_album]$ find /mnt/c/e-m10/ -name "$i"        
/mnt/c/e-m10/IMG_9607.JPG
[molni@archlinux picasa_album]$ 

私は何が間違っていましたか?

ベストアンサー1

このようにして、cat -v LIST単純なエコーでは見えない特殊文字があることを確認してください。 DOS行の終わりが疑われます。つまり、改行前に追加のキャリッジリターンが発生しているようです。

編集:変換リストファイル:

dos2unix < LIST > LIST.new && mv LIST.new LIST

またはdos2unixはありませんが、vim:、vim LISTthen :set notx、thenがある場合:wq

おすすめ記事