Linux 在子目录中的文件上使用sed

Linux 在子目录中的文件上使用sed,linux,shell,sh,Linux,Shell,Sh,我有一个txt文件包含子目录中的所有文件名。大概是这样的: /person/name/abc.xml: somestring /person/address/ddd.xml: somestring /person/address/ccc.xml: somestring 因此,我的脚本是循环这个txt文件并获取目录(冒号:)并将其放在sed命令的末尾 如果我在父目录中运行一个sed命令,那么sed命令可以工作,但是当我运行下面的脚本时,“my_file”变量不包含目录字符串值。这很奇怪,因为'm

我有一个txt文件包含子目录中的所有文件名。大概是这样的:

/person/name/abc.xml: somestring
/person/address/ddd.xml: somestring
/person/address/ccc.xml: somestring
因此,我的脚本是循环这个txt文件并获取目录(冒号:)并将其放在sed命令的末尾

如果我在父目录中运行一个sed命令,那么sed命令可以工作,但是当我运行下面的脚本时,“my_file”变量不包含目录字符串值。这很奇怪,因为'my_file'变量值显示在echo命令中

while IFS='' read -r LINE || [ -n "${LINE}" ]; do
    my_file=$(${LINE} | grep -oE '^[^:]+')
    echo "$my_file"
    sed -i 's/stringA/stringB/g' ./$my_file
done < directory_list.txt
而IFS=''读-r行| |[-n${LINE}];做
my_file=$(${LINE}|grep-oE'^[^::::+'))
echo“$my_文件”
sed-i的/stringA/stringB/g'/$my_文件
完成
请添加一个包含输入(您已输入)、预期输出、当前输出、任何错误或日志的。这将有助于我理解“如果我在父目录中运行一个,则工作正常…”。请在
sed
的末尾尝试
“/${my_file}”
,以确保
$my_file
没有任何异常情况发生。另外,您提到要处理子目录,但如果您的输入文件具有
/person/name/abc.xml
,这意味着根目录下有一个
person
目录(
/
)。如果
person
目录是您当前位置的子目录,则应将其表示为
/person/name/abc.xml
person/name/abc.xml
@Nic3500,sed命令的预期输出为:
sed-i's/stringA/stringB/g./person/name/abc.xml
,是的,我正在父目录中运行它我想我的问题应该是“为什么变量$my_file的值没有传递到命令中”你应该用my_file=${my_file%%:*}替换:my_file=$(${LINE}}grep-oE'^[^::::+')