清除目录

清除目录

我有父文件夹列表;在每个父文件夹中我都有子文件夹和文件。如何清空父文件夹——即删除所有文件和子文件夹并将父文件夹留空?

Parent folder A
       subfolder aa
       file a
Parent folder B
       file b
       file vv
Parent folder C
       subfolder s
       subfolder n 
        file x
.
.
.
.

答案1

使用 GNU find

find "Parent folder A" "Parent folder B" ... -mindepth 1 -delete

答案2

或者,告诉rm在每个父文件夹下开始删除:

# set dotglob to have * include files beginning with '.'
shopt -s dotglob
rm -r "Parent folder A"/* "Parent folder B"/* ...

答案3

假设顶级目录中没有文件:

for i in *; do (cd "$i"; rm -rf *); done

或者

for i in *; do (cd "$i"; for j in *; do rm -rf "$j"; done); done

我更喜欢后者,因为*如果目录为空,它不会尝试删除,并且可以轻松修改它以仅包含某些文件模式。对于更复杂的事情,请使用find.

答案4

假设您的 cwd (当前工作目录)是所有父文件夹所在的位置,您可以执行以下操作:

for i in *; do
    [[ -d "$i" ]] || continue
    rm -rf "$i"/*
done
  • 循环遍历当前文件夹中的所有目录(即父文件夹)
  • 删除每个子文件夹中的所有文件和文件夹

相关内容