我有父文件夹列表;在每个父文件夹中我都有子文件夹和文件。如何清空父文件夹——即删除所有文件和子文件夹并将父文件夹留空?
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
- 循环遍历当前文件夹中的所有目录(即父文件夹)
- 删除每个子文件夹中的所有文件和文件夹