打印“find”linux命令找到匹配项的目录

打印“find”linux命令找到匹配项的目录,linux,bash,ubuntu,Linux,Bash,Ubuntu,我有一堆目录;其中一些包含“.todo”文件 /storage/BCC9F9D00663A8043F8D73369E920632/.todo /storage/BAE9BBF30CCEF5210534E875FC80D37E/.todo /storage/CBB46FF977EE166815A042F3DEEFB865/.todo /storage/8ABCBF3194F5D7E97E83C4FD042AB8E7/.todo /storage/9DB9411F403BD282B097CBF06A

我有一堆目录;其中一些包含“.todo”文件

/storage/BCC9F9D00663A8043F8D73369E920632/.todo
/storage/BAE9BBF30CCEF5210534E875FC80D37E/.todo
/storage/CBB46FF977EE166815A042F3DEEFB865/.todo
/storage/8ABCBF3194F5D7E97E83C4FD042AB8E7/.todo
/storage/9DB9411F403BD282B097CBF06A9687F5/.todo
/storage/99A9BA69543CD48BA4BD59594169BBAC/.todo
/storage/0B6FB65D4E46CBD8A9B1E704CFACC42E/.todo
我希望“find”命令只打印目录,如下所示

/storage/BCC9F9D00663A8043F8D73369E920632
/storage/BAE9BBF30CCEF5210534E875FC80D37E
/storage/CBB46FF977EE166815A042F3DEEFB865
...
这是我到目前为止得到的,但它也列出了“.todo”文件

#!/bin/bash
STORAGEFOLDER='/storage'
find $STORAGEFOLDER -name .todo  -exec ls -l {} \;

应该是愚蠢的,但我放弃了:

要只打印目录名,请使用-printf“%h\n”。还建议使用双引号引用变量

find "$STORAGEFOLDER" -name .todo -printf '%h\n'
如果要处理输出,请执行以下操作:

find "$STORAGEFOLDER" -name .todo -printf '%h\n' | xargs ls -l
或者使用带有进程替换的循环来使用变量:

while read -r DIR; do
    ls -l "$DIR"
done < <(exec find "$STORAGEFOLDER" -name .todo -printf '%h\n')


要仅打印目录名,请使用-printf“%h\n”。还建议使用双引号引用变量

find "$STORAGEFOLDER" -name .todo -printf '%h\n'
如果要处理输出,请执行以下操作:

find "$STORAGEFOLDER" -name .todo -printf '%h\n' | xargs ls -l
或者使用带有进程替换的循环来使用变量:

while read -r DIR; do
    ls -l "$DIR"
done < <(exec find "$STORAGEFOLDER" -name .todo -printf '%h\n')


剥离文件名并仅显示其所在目录的简单快捷答案是dirname:


剥离文件名并仅显示其所在目录的简单快捷答案是dirname:


@Disco请查看我的更新,其中给出了运行ls的示例。@Disco请查看我的更新,其中给出了运行ls的示例。
#!/bin/bash
STORAGEFOLDER='/storage'
find "$STORAGEFOLDER" -name .todo  -exec dirname {} \;