截断查找./命令

时间:2013-01-24 23:31:23

标签: linux unix find

如果我find ./,我得到的结果类似于:

/Volumes/FulfilmentArray//.Trashes/1060/ffmpeg2pass-0.log.mbtree.temp

有没有办法让find ./命令只返回文件名和容器文件夹?在上述情况下,它将是:

1060/ffmpeg2pass-0.log.mbtree.temp

4 个答案:

答案 0 :(得分:2)

find ./ | rev | cut -d/ -f-2 | rev

答案 1 :(得分:2)

find ./ | rev | cut -d/ -f-2 | rev

一点点解释可能会有很长的路要走。使用的命令:

  • rev:反转每行中字符的顺序。 (man page
  • cut:从每行文件中删除部分。 (man page

所以前面的代码是用一个例子来做的:

  1. 打印出相对于当前目录

    的所有文件的路径
    ./Machine Learning - Stanford/Self-notes/08-10.txt
    
  2. 撤消路径字符串

    txt.01-80/seton-fleS/drofnatS - gninraeL enihcaM/.
    
  3. 将字符串剪切到第二个正斜杠,离开第一个部分(因此包含文件名和包含文件夹,相对于执行查找的文件夹的位置)

    txt.01-80/seton-fleS --separated here-- /drofnatS - gninraeL enihcaM/.
    
  4. 撤消结果

    Self-notes/08-10.txt
    

答案 2 :(得分:1)

我确定awk可以替换为sed。我添加了“-type f”标志,因为你说的是​​文件名,但是如果你也想要目录,那就把它删除吧。

find ./ -type f|awk -F'/' '{ print $(NF-1)"/"$NF }'

答案 3 :(得分:0)

这可能是一种解决方法:

find . | awk -F "/" '{ if (NF > 2) { print $(NF-1) "/" $NF; } else { print $NF; }}'
相关问题