好的,这么简单..我想以递归方式在目录中搜索具有特定扩展名的文件 - 然后对这些文件执行操作。
# pwd
输入
/dir
# ls -R | grep .txt | xargs -I {} open {}
ENTER
The file /dir/reallyinsubfolder.txt does not exist.
⬅失败(坏)
没有输出,但是成功.. /dir/fileinthisfolder.txt
sile默默地打开(好)
这个确实找到了我感兴趣的所有文件......但只有OPEN的那些碰巧是“1级”的文件。在这种情况下,尝试打开/dir/reallyinsubfolder.txt
失败,因为reallyinsubfolder.txt
实际上是/dir/sub/reallyinsubfolder.txt
。
据我所知,grep只是返回匹配的文件名...然后扼杀(在这种情况下)open命令,因为它无法到达正确的子目录来执行文件..
如何让grep
返回匹配的完整路径?
答案 0 :(得分:2)
如何使用find
命令 -
find /path/to/dir -type f -iname "*.txt" -exec action to perform {} \;
答案 1 :(得分:1)
find . -name *.txt -exec open {};
(用你需要的反斜率装饰)
答案 2 :(得分:1)
我相信你问的是错误的问题; parsing ls(1)
output in this fashion is far more trouble than it is worth
什么能更可靠地发挥作用:
find /dir -name '*.txt' -print0 | xargs -0 open
或
find /dir -name '*.txt' -exec open {} \;
find(1)
几乎不会像ls(1)
那样破坏名称,并且使匹配文件上的执行程序更加可靠。