Linux 文件名中的转义括号。Shell脚本
我有许多具有模式名称的文件:Linux 文件名中的转义括号。Shell脚本,linux,bash,Linux,Bash,我有许多具有模式名称的文件: N.apple(d).log e、 g.001.apple(d).log,002.apple(d).log,等等 问题是,当我试图对bash脚本中的文件执行某些操作时,始终会出现错误“没有这样的文件或目录”,即使使用转义括号: for i in $(ls my_folder); do file=$(echo $i | sed 's/(/\\(/g' | sed 's/)/\\)/g') ; head -1 my_folder/$file; done 感谢您提供的
N.apple(d).log
e、 g.001.apple(d).log
,002.apple(d).log
,等等
问题是,当我试图对bash脚本中的文件执行某些操作时,始终会出现错误“没有这样的文件或目录”,即使使用转义括号:
for i in $(ls my_folder); do file=$(echo $i | sed 's/(/\\(/g' | sed 's/)/\\)/g') ; head -1 my_folder/$file; done
感谢您提供的任何提示使用引号。另外,当shell可以很好地扩展通配符时,不要使用ls
for i in my_folder/*; do head -1 "$i"; done
循环也可以进行:
head-1 my_folder/*
。虽然这也是事实,但我假设循环中还有更多内容,而head只是一个例子。但是,也许这是一个乐观的假设:)