我的问题是,如何在BASH中更改一个目录和几个子目录中的多个txt文件中的一个单词?我做了如下(检查所有类似的主题),但仍然无法正常工作。 changePhrase是子目录和文件所在目录的名称。在这些文件中是我要更改的字符串。我必须使用for循环(这是一项任务)。 错误在哪里?谢谢。
#!/bin/bash
for file in changePhrase; do
if [[ -f $file ]] && [[ -w $file ]]; then
sed -i -- 's/old/new/g' "$file"
fi
done
答案 0 :(得分:0)
可以做到
find changePhraseDir -type f -a -writeable|xargs sed -i 's/foo/bar/'
-type f
->文件-a
->和-writable
->您的-w
答案 1 :(得分:0)
我认为,只要将find添加到for循环中,代码就可以工作:
Traceback (most recent call last):
File "/home/enzoportela/PycharmProjects/SoftwareRover2018.2/SoftRover/I.A Rover(2018.2).py", line 25, in <module>
playsound.playsound("test.mp3")
File "/home/enzoportela/anaconda3/envs/SoftwareRover2018.2/lib/python3.6 /site-packages/playsound.py", line 91, in _playsoundNix
import gi
ModuleNotFoundError: No module named 'gi'
答案 2 :(得分:0)
如果changePhrase是目录的名称,请尝试在其后附加/**{,/*}
。使用通配符将使循环遍历所有文件。