如果目录只包含特定的文件类型(不应包含任何其他文件),如何删除目录? 例如:
我的目录名称是:AAA
AAA
包含文件abc.txt
在这种情况下,应删除AAA
。
但如果AAA
包含abc.txt
和def.pdf
,那么在这种情况下不应删除它。
答案 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
命令以递归方式删除任何内容。 (危险!)。
现在,您可能有所有信息来制作脚本。尝试创造一些东西然后回来询问你是否遇到了一些问题。