mol*_*lni 3 shell bash find text-processing
我有一个我不明白的问题。这很简单,它应该可以工作,但事实并非如此。= EDITED 正是我从终端看到的内容= 我有一个文件名列表:
[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
Run Code Online (Sandbox Code Playgroud)
并希望通过 find 命令搜索列表中的每个文件的路径:
[molni@archlinux picasa_album]$ for i in `cat LIST`; do find /mnt/c/e-m10/ -name "$i"; done
[molni@archlinux picasa_album]$
Run Code Online (Sandbox Code Playgroud)
没有结果,当我用它换回 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]$
Run Code Online (Sandbox Code Playgroud)
当我手动执行时,设置变量(无循环)它可以工作:
[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]$
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
做一个cat -v LIST看看是否有任何你没有看到的简单回显的特殊字符。我怀疑 DOS 行结尾,即换行前的无关回车。
编辑:转换列表文件:
dos2unix < LIST > LIST.new && mv LIST.new LIST
Run Code Online (Sandbox Code Playgroud)
或者,如果您没有 dos2unix,但有 vim: vim LIST,则:set notx,则:wq