在除多个具有特定名称的dat文件之外的多个目录中的dat文件中粘贴一行。
这是我到目前为止所获得的代码。
for file in */*; do
if [ $file != "NoEdit.dat" ]
then
echo 'Configuration' >> $file
fi
done
有关如何排除名称为“NoEdit.dat”的文件的任何想法? 我一直在尝试实现!(NoEdit.dat)和“if”参数。 我是一般的编程新手,任何帮助都将不胜感激!
修改 使用find命令工作。
find */* ! -name 'NoEdit.dat' -exec sh -c 'echo "Configuration" >> {}' \;
答案 0 :(得分:0)
此代码可实现您的目标:
#!/bin/bash
directory='/folder/'
mkdir -p /tmp/
find "$directory" -maxdepth 1 -type f -printf '%f\n' | grep -e ".dat" | grep -v "NoEdit.dat" > /tmp/holder && directoryEscaped="$(echo "$directory" | sed 's/\//\\\//g')" && sed -i -e "s/^/$directoryEscaped/" /tmp/holder
while read -r line; do
filename="$line"
echo 'Configuration' >> "$filename"
done < /tmp/holder
exit 0
您需要做的就是为变量“directory”提供要搜索的文件夹路径。基本上,代码会创建一个临时文件,其中包含与您提供的名称不匹配的所有文件的文件路径,然后它会回显每个文件的字符串(在每个文件的末尾)。
修改:我编辑了代码以搜索和更改.dat文件