如何从find命令的o / p在目录名末尾附加`/`

时间:2019-01-28 20:55:23

标签: bash

我正在使用find /tmp/tartest/ -maxdepth 1 -mindepth 1 -not -type l命令来获取除符号链接之外的所有文件和目录的列表。这给了我以下o / p:

/tmp/tartest/hi.txt
/tmp/tartest/hello1.txt
/tmp/tartest/testdir
/tmp/tartest/hello.txt

通知/tmp/tartest/testdir是否可以以/结尾? /tmp/tartest/testdir/是否找到所有目录?

我正在外壳脚本中使用此o / p。

1 个答案:

答案 0 :(得分:5)

find表达式可以具有分支逻辑。 默认附加两个后续动作的方式是-a(“和”),但是您也可以手动使用-o(“或”)。

因此,使用GNU find(在这里使用,因为它支持-printf,可让您指定任意格式的字符串):

find /tmp/tartest -maxdepth 1 \
  -type d -printf '%p/\n' \
  -o -printf '%p\n'

注意:

  • -maxdepth 1是全局的,因此它自然适用于所有分支。
  • -type d -printf '%p/\n'打印目录名称(-type d为真的内容),后跟/
  • -o -printf '%p\n'条件附加到上面,使得没有printf的{​​{1}}仅在某些东西无效时运行匹配/