删除目录中的所有文件,而不删除目录

use*_*112 2 linux delete

我有一个名为outer.

outer包含一个名为的目录inner(其中包含许多相同扩展名的文件)

cdouter。如何删除其中的所有文件inner但保留目录inner(但为空)?

dim*_*ich 6

find inner -mindepth 1 -delete
Run Code Online (Sandbox Code Playgroud)


ter*_*don 5

如果你想删除目录的内容而不是目录本身,你需要做的就是告诉rm删除内容:

rm inner/*
Run Code Online (Sandbox Code Playgroud)

这将删除其中的所有非隐藏文件./inner并保持目录完好无损。要同时删除任何子目录,请使用-r

rm -r inner/*
Run Code Online (Sandbox Code Playgroud)

如果您还想删除隐藏文件,您可以这样做(假设您使用的是 bash):

shopt -s dotglob
rm -r inner/*
Run Code Online (Sandbox Code Playgroud)

最后一个命令将删除 中的所有文件和所有目录inner,但会inner保持完整。

最后,注意你不需要cdouter运行任何这些:

$ tree -a outer/
outer/
??? dir
??? inner
    ??? dir
    ??? file
    ??? .hidden

3 directories, 2 files
Run Code Online (Sandbox Code Playgroud)

我现在可以rm -r outer/inner/*从当前目录运行,无需运行cd outer,它将删除除目录本身之外的所有内容:

$ shopt -s dotglob
$ rm -r outer/inner/*
$ tree -a outer/
outer/
??? dir
??? inner

2 directories, 0 files
Run Code Online (Sandbox Code Playgroud)