我正在尝试为Ubuntu创建一个cronjob:
目前我有:
find /path -depth rmdir {} \; 2>dev/null
删除只有txt或csv文件的文件夹需要什么?
我不想删除所有txt或csv文件,只删除那些不包含其他文件类型的文件夹。
附加示例: DIR1
SubDir1
SubSubDir1
FILE.TXT
FILE.CSV
SubDir2
SubSubDir2
应删除SubSubDir1。由于SubDir1和Dir现在为空,因此也应将其删除。 SubSubDir2包含另一个文件类型,不应删除。
答案 0 :(得分:0)
您可以使用以下内容列出文件夹中的文件数:
find "$d" -maxdepth 1 -not -iname '*.csv' -a -not -iname '*.txt' | wc -l
如果文件夹为空或文件夹仅包含txt和csv文件,则应打印1。
并列出文件夹,以便在您首先删除父母时不会互相搞乱:
find /path -depth -type d
总而言之,您可能能够实现您想要的目标:
while read d
do
if [ $(find "$d" -maxdepth 1 -not -iname '*.csv' -a -not -iname '*.txt' | wc -l) -eq 1 ]
then
rm -rf "$d"
fi
done < <(find /path -depth -type d)
但是我也提倡在某个地方进行检查,以便您的cron在未经您同意的情况下不会擦除您的存储空间。