如何输入所有子目录并对内部文件执行命令?

时间:2017-03-21 15:28:10

标签: bash find subdirectory

我首先要说的是,在谈到bash时我是个新人。

我正在尝试创建一个脚本,该脚本将进入所有目录和子目录(以及子子目录),并对这些目录中的文件执行命令。

我需要运行的命令只是在文件的开头添加一些文本,并将其保存在(另一个)文件中,文件名末尾的“.com”与原始目录相同。 / p>

到目前为止,我已经能够创建一个完全执行此操作的脚本,但不会深入到一个子目录(它不会进入目录的目录)

for f in /scratch/aurelien/test/*;
do
[ -d $f ] && cd "$f" &&
for file in ./* ; do printf "TEXT TO ADD TO BEGINNING OF FILE" > ${file}.com && 
tail -n +3 <"$file" >> "${file}.com" ; done &&
done;

进入圈子一段时间后,我决定尝试使用“查找”来执行此操作:

 find /scratch/aurelien/test/ -type f -execdir printf "TEXTTOADDTOBEGINNINGOFFILE" > {}.com &&
 tail -n +3 <"${}" >> "${}.com" \;

但是我不确定我是否已经理解了find命令中{}的滚动,并且使用了execdir我收到了一条错误消息:

find:当前目录包含在PATH环境变量中,与find的-execdir操作结合使用是不安全的。请从$ PATH中删除当前目录(即删除“。”或前导或尾随冒号)

非常感谢任何帮助!

0 个答案:

没有答案