使用find后我需要迭代文件
var=`find -name "reg"`
#replace ./ for newline
for file in $var; do
#something
done
编辑:使用$ {string#* /}解决它会带走./ 我能用我的想法生存
答案 0 :(得分:2)
我不关心你如何使用命令行或任何适合你的$文件。我更关心你问题的#do something
部分,我认为这是一个主要问题,所有发布各种find -name 'reg' | xargs ...
的人应该在使OP事项复杂化之前再三思考。
var=`find -name "reg"`
#replace ./ for newline
for file in $var; do
sed -i 's|\./|\n|g' $file
done
删除-i选项以在屏幕上获取输出,如果获得满意的输出,则使用-i实际更改该线。
在第二次阅读时,也许我正在替换另一种方式,也许你想用./替换换行符?它有点复杂
sed -i ':a;N;$!ba;s|\n|./|g' $file
一如既往,不使用-i选项进行测试,然后决定是否要修改文件
有关第二个sed魔法的解释,请阅读this SO。除了替换字符串的./
字符外,它完全相同。
答案 1 :(得分:0)
find -name "reg" | while read file; do ...; done
答案 2 :(得分:0)
while IFS= read -r line; do
var="${line#./}"
echo "$var"
done < <(find . -name reg -print)
答案 3 :(得分:0)
好吧我终于解决了它们,我可以删除./
串=。/布拉布拉/ BLA
string = $ {string#* /} #delete stuff,直到第一个/包含
echo $ string #got blabla / bla