我有多个文件夹,其名称为:
1_1,1_2,...,2_1,...,
每个文件夹都包含名为 file.sh
的相同文件。该文件具有以下形式:
job_name=NAME
Partition = Long
我想在终端 (Linux) 中对我的所有文件夹使用搜索和替换命令,例如以下
find . -type f -name "file.sh" -print |xargs sed -i 's/job_name/REPLACED_TEXT/g'
在REPLACED_TEXT的位置我想要文件夹的名称。例如,在文件夹1_1
内,将有file.sh
文件,其修改后的形式为:
job_name=1_1
Partition = Long
我还没有找到解决方案。
最佳答案
您没有指定可能需要遍历多少个子目录,例如
./1_1/file.sh
./1_2/file.sh
./a/b/c/1_1/file.sh
因此,为此我只假设一个子目录,如下所示:
./1_1/file.sh
./1_2/file.sh
像下面这样的东西应该能够让你开始,而不是测试,只是把它写在我的脑海里。它是由 bash 脚本编写的,但您可以将其变成一个又大又长的命令。确保首先备份您的目录,以防脚本产生不可预测的结果。
for i in `find . -type f -print "file.sh"`;
do
subdir=`echo $i | awk -F\/ '{print $2}'`
sed -e s/job_name=NAME/jobname=$subdir/ $i > $i.bak
mv $i.bak $i
done
关于linux - 使用包含文件夹的名称搜索并替换为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251689/