我有一个bash命令,其中列出了许多文件和目录。我想删除所有不存在的目录。无论如何,我无需创建自己的脚本就能做到这一点吗?即我想使用linux中已有的程序。
例如鉴于我有这个文件夹:
dir1/
dir2/
file.txt
我希望能够运行以下内容:
echo dir1 dir2 file.txt somethingThatDoesNotExist | xargs [ theCommandIAmLookingFor]
并获得
dir1
dir2
答案 0 :(得分:1)
如果生成推定路径的命令使用更好的定界符会更好,但是您可能正在寻找类似的东西:
... | xargs -n 1 sh -c 'test -d "$0" && echo $0'
答案 1 :(得分:0)
您可以使用grep -v
使用此命令行:
your_command | grep -vxFf <(printf '%s\n' */ | sed 's/.$//') -
这将从列表中过滤掉当前路径中的所有子目录。
如果只想列出现有目录,则将-v
删除为:
your_command | grep -xFf <(printf '%s\n' */ | sed 's/.$//') -
请注意,全局*/
会打印当前路径中所有带有后缀/
的子目录,并且sed
用于删除最后一个/
。