如果在linux中包含特定的文件类型,如何删除目录?

时间:2014-07-23 20:32:16

标签: shell

如果目录只包含特定的文件类型(不应包含任何其他文件),如何删除目录? 例如:

我的目录名称是:AAA

AAA包含文件abc.txt

在这种情况下,应删除AAA

但如果AAA包含abc.txtdef.pdf,那么在这种情况下不应删除它。

1 个答案:

答案 0 :(得分:0)

在每种情况下,您都需要找到包含文件abc.txt的目录。为此,您可以使用file命令,例如:

find $topdir -name abc.txt -print

这将打印文件的完整路径名。剥离file部分,您将获得目录名称。为此,dirname命令存在于:

dirname "./x/y/z/abc.txt"

产生

./x/y/z

或者您可以使用-printf命令的find功能仅打印目录部分,例如:

find $topdir -name abc.txt -printf "%h\n"

由于文件名也可以包含空格和/或换行符,因此建议使用null terminated个字符串。例如。上面的命令可能是

find $topdir -name abc.txt -printf "%h\0" #null terminated

任何命令的结果都可以在while循环中读取,null terminated字符串使用:

while read -d $'\0' -r line
do
    #do something here
done < <(command)

find命令知道-empty参数,什么可以帮助查找空目录,或者您可以使用

测试是否存在任何文件
if [[ -f "$filename" ]]
then
    # do something
else
    # do something other
fi

或缩短

[[ -f "$filename ]] && dosomething

最后,您可以使用rmdir命令删除目录,也可以使用rm -r命令以递归方式删除任何内容。 (危险!)。

现在,您可能有所有信息来制作脚本。尝试创造一些东西然后回来询问你是否遇到了一些问题。