Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 文件名中的转义括号。Shell脚本_Linux_Bash - Fatal编程技术网

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只是一个例子。但是,也许这是一个乐观的假设:)