如果文件夹中有另一个具有相同起始编号的文件夹,则删除该文件夹

如果文件夹中有另一个具有相同起始编号的文件夹,则删除该文件夹

我有一些错误创建的文件夹。我想删除这些文件夹。

¬ 636
¬ 636.empty
¬ 637
¬ 638.empty
¬ 639
¬ 639.empty

在这种情况下,我想删除636.empty并保留剩余的非空文件夹。

运行终端命令后,我想sister删除文件夹中的所有文件夹。

¬ 636
¬ 637
¬ 638.empty
¬ 639

删除的文件夹为:

¬ 636.empty
¬ 639.empty

我有一些25,000文件夹,也许1000 这些文件夹与该empty文件夹重复

答案1

循环遍历所有命名的目录*empty并检查是否存在相同的目录,.empty如果是则删除:

for d in *.empty; do
    [ -d "$d" ] && [ -d "${d%.empty}" ] && rmdir "$d"
done

如果目录不是空的,则替换rmdir为,尽管目录名称是 ;-)rm -rf


替代find方案:

find -maxdepth 1 -type d -name '*.empty' \
  -exec sh -c '[ -d "${1%.empty}" ]' find-sh {} \; \
  -delete

如果目录不为空,则替换-delete为。-exec rm -rf {} \;

相关内容