Ubuntu - 删除目录并忽略文件类型

时间:2017-04-12 09:29:33

标签: linux bash ubuntu

我正在尝试为Ubuntu创建一个cronjob:

  • 应删除所有空目录
  • 如果dir不为空,那么如果只有文件类型为txt或csv文件则应将其删除

目前我有:

find /path -depth rmdir {} \; 2>dev/null

删除只有txt或csv文件的文件夹需要什么?

我不想删除所有txt或csv文件,只删除那些不包含其他文件类型的文件夹。

附加示例: DIR1

  • SubDir1

    • SubSubDir1

      • FILE.TXT

      • FILE.CSV

  • SubDir2

    • SubSubDir2

      • File.xml

应删除SubSubDir1。由于SubDir1和Dir现在为空,因此也应将其删除。 SubSubDir2包含另一个文件类型,不应删除。

1 个答案:

答案 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在未经您同意的情况下不会擦除您的存储空间。