这个问题已经在这里有一个答案:
- 如何去每个目录和执行命令? 10个回答
- 重定向标准输出与发现-exec,并不会产生新的外壳 3个回答
我会说我是一个牛逼,当谈到来砸开始。
我想创建一个脚本,将进入所有目录和子目录(和子子-..-子目录)以及这些目录里的文件执行的命令。
我需要运行该命令只是在文件开头添加一些文字,并在同一目录中的原始文件名末尾将其保存在“.COM”(另一个)文件。
到目前为止,我已经能够创建一个脚本,正是这一点,但不会去深度超过一个子目录(它不会进入目录的目录)
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聆听我得到一个错误信息的卷:
发现:当前目录包含在PATH环境变量,这与发现的-execdir动作组合不安全。 请从您的$ PATH删除当前目录(即去掉“”或者前导或尾随冒号)
任何帮助将不胜感激 !