【发布时间】:2021-09-03 03:02:49
【问题描述】:
请原谅我的业余语言。
我已经编写了一个简单的单行代码来从一个巨大的文本文件中找出我想要的内容:
cat file | grep "value" | cut -f1 -d":"
它从那里输出文件路径行。
我希望它继续这样做:
-
cd一次一行进入路径。 - 每次在
cd之后运行此命令:ls | grep .fileformat - 然后让我运行 3 个我选择的命令,如果我按 [return] 没有任何值,它将忽略并侦听下一个命令。三个完成后,它会继续。
- cd 进入下一行的目录并重复直到最后一行。
很抱歉,我无法弄清楚这部分,因为我什至不知道从哪里开始搜索。
感谢您的收看!
编辑 1:我的初始命令的输出给出如下路径:
/home/user/path/to/file
所以没有~,应该可以cd进去没问题吧?
【问题讨论】:
-
第三步的命令怎么选?您确定必须 cd 进入各个目录吗?您如何处理步骤 2 的输出?
ls | grep有一些问题,.fileformat几乎肯定会匹配您不打算匹配的内容(.是匹配所有内容的正则表达式特殊字符)。 -
@BenjaminW。我只是将 rm 和 cat 列出的文件 ls |例如 grep .mkv。我尝试了 ls 命令,它对我来说完美无缺
-
用
grep value file代替cat file | grep value。 1中的路径是什么?如果你在 sub-sell() 中 cd 它将恢复到已知目录,否则你必须跟踪它们,除非它们是绝对路径。 -
@AllanWind 道歉我不知道已知的指令是什么,但我的命令的输出(尽管你指出的效率低下)给出了这个:/home/user/file/path。所以我想这些路径是“绝对的”。不喜欢〜或软链接
-
sed 通常是一个不错的选择,而不是 grep + cut per below。
标签: bash interactive