文件夹路径+文件名的最后一部分

时间:2016-05-17 14:56:30

标签: bash find

我想以Folder/Folder格式打印。

而不是完整路径:

/volume1/ArtWork/Folder1/folderA
/volume1/ArtWork/Folder1/folderB
/volume1/ArtWork/Folder2/folderA
/volume1/ArtWork/Folder2/folderA

我想用txt"半路径打印" (不仅是文件名!):

Folder1/folderA 
Folder1/folderB
Folder2/folderA
Folder2/folderA

这就是我目前使用的:

find /volume1/ArtWork/* -type d -maxdepth 2 \
    -not -empty -printf '%f\n' \
    > /volume1/ArtWork/filenamesdir.txt

(我想打印非空文件夹,但目前格式错误)

3 个答案:

答案 0 :(得分:0)

我建议在运行find命令之前导航到该文件夹​​。使用-printf '%P\n',您可以打印感兴趣的部分,每个部分都在一个单独的行上:

pushd /volume1/ArtWork
find . -type d -maxdepth 2 -not -empty -printf '%P\n'
popd

请注意,我使用pushd / popd代替cd。这使得更改为目录并返回上一个更方便。

答案 1 :(得分:0)

这样做:

find /volume1/ArtWork/* -maxdepth 2 -type d \
-exec sh -c 'echo $0 | grep -o "[^/]*/[^/]*$"' {} \; \
> /volume1/ArtWork/filenamesdir.txt

答案 2 :(得分:0)

这是一个gnu-sed版本:

find /your/path -mindepth 1 -type d -print0 |
xargs -0 -I{}  bash -c 'sed -r "s/.*\/(.*\/.*)$/\1/" <<<"{}"'