我首先要说的是,在谈到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中删除当前目录(即删除“。”或前导或尾随冒号)
非常感谢任何帮助!