如果我这样做find ./
,我会得到类似的结果:
/Volumes/FulfilmentArray//.Trashes/1060/ffmpeg2pass-0.log.mbtree.temp
有没有办法执行find ./
命令只返回文件名和容器文件夹?在上述情况下,它将是:
1060/ffmpeg2pass-0.log.mbtree.temp
find ./ | rev | cut -d/ -f-2 | rev
find ./ | rev | cut -d/ -f-2 | rev
一点解释可能会有很长的路要走。使用的命令:
所以前面的代码是用一个例子做的:
打印出相对于当前目录的所有文件的路径
./Machine Learning - Stanford/Self-notes/08-10.txt
反转路径字符串
txt.01-80/seton-fleS/drofnatS - gninraeL enihcaM/.
在第二个正斜杠处剪切字符串,留下第一部分(因此包括文件名和包含文件夹,相对于执行 find 的文件夹的位置)
txt.01-80/seton-fleS --separated here-- /drofnatS - gninraeL enihcaM/.
反转结果
Self-notes/08-10.txt
我敢肯定 awk 可以换成 sed。自从您说文件名以来,我添加了“-type f”标志,但是如果您也想要目录,只需将其删除即可。
find ./ -type f|awk -F'/' '{ print $(NF-1)"/"$NF }'
这可能是一种解决方法:
find . | awk -F "/" '{ if (NF > 2) { print $(NF-1) "/" $NF; } else { print $NF; }}'