如何仅删除目录并保持文件不变

发布于 2024-11-06 09:27:24 字数 156 浏览 6 评论 0原文

我在一个目录中有数百个目录和文件。

仅删除目录的最佳方法是什么(无论目录中是否有任何内容,只需将它们全部删除)

目前我使用 ls -1 -d */ ,并将它们记录在文件中,执行sed,然后运行它。路途相当遥远。我正在寻找仅删除目录的更好方法

I have hundreds of directories and files in one directory.

What is the best way deleting only directories (no matter if the directories have anything in it or not, just delete them all)

Currently I use ls -1 -d */, and record them in a file, and do sed, and then run it. It rather long way. I'm looking for better way deleting only directories

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

稀香 2024-11-13 09:27:24

要删除所有目录和子目录并仅在工作目录中保留文件,我发现这个简洁的命令对我有用:

rm -r */

它使用 bash 通配符 */,其中星号后跟斜杠将仅匹配目录和子目录。

To delete all directories and subdirectories and leave only files in the working directory, I have found this concise command works for me:

rm -r */

It makes use of bash wildcard */ where star followed by slash will match only directories and subdirectories.

南七夏 2024-11-13 09:27:24

<代码>查找 . -max深度 1 -min深度 1 -输入 d

然后

find 。 -max深度 1 -min深度 1 -type d -exec rm -rf '{}' \;

添加说明:

find 由于 而从当前目录开始。-maxdepth-mindepth 均设置为 1 时,才会保留在当前目录中。 -type d 告诉 find 仅匹配目录。

find 还有一个 -exec 标志,可以将其结果传递给另一个函数,在本例中为 rm'{}' \; 是传递这些结果的方式。 有关 {}\; 功能的更完整说明,请参阅此答案

find . -maxdepth 1 -mindepth 1 -type d

then

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

To add an explanation:

find starts in the current directory due to . and stays within the current directory only with -maxdepth and -mindepth both set to 1. -type d tells find to only match on things that are directories.

find also has an -exec flag that can pass its results to another function, in this case rm. the '{}' \; is the way these results are passed. See this answer for a more complete explanation of what {} and \; do

心头的小情儿 2024-11-13 09:27:24

首先,运行:

find /path -d -type d

以确保输出看起来正常,然后:

find /path -d -type d -exec rm -rf '{}' \;

-type d 仅查找目录,然后 -d 确保将子目录放在父目录之前。

First, run:

find /path -d -type d

to make sure the output looks sane, then:

find /path -d -type d -exec rm -rf '{}' \;

-type d looks only for directories, then -d makes sure to put child directories before the parent.

情深缘浅 2024-11-13 09:27:24

简单的方法:-

rm -rf `ls -d */`

Simple way :-

rm -rf `ls -d */`
奶气 2024-11-13 09:27:24

rm -R $(ls -1 -d */ | grep .. )

rm -R $(ls -1 -d */ | grep .. )

裸钻 2024-11-13 09:27:24

find 命令(支持文件删除)\

find /path -depth -type d -delete

-type d 仅查找目录,然后 -深度 确保将子目录放在父母。 -delete 删除过滤的文件/文件夹

find command only (it support file deletion)\

find /path -depth -type d -delete

-type d looks only for directories, then -depth makes sure to put child directories before the parent. -delete removing filtered files/folders

可爱暴击 2024-11-13 09:27:24

我通过添加一种保留一个文件夹的方法来做到这一点。我在子文件夹中执行命令以删除父文件夹中的文件夹。它不适用于带有空格的目录名称:

  • 父文件夹=>清洁系统

  • subfolder_to_be_preserved =>; Linux

  • 子文件夹中的文件_to_be_preserved => OK_麦凯.txt
    
  • 要删除的子文件夹=>窗口

  • too_many_files =>; ***
    
    
     rm -r $(ls -1 -d ../*/ | grep -v Linux);
    

    这适用于带有空格的文件夹名称:

    <前><代码>查找../。 -type d -name "* *" -execdir bash -c 'mv "$1" "${1// /_}"' _ {} \; 2>/dev/null;rm -r $(ls -1 -d ../*/ | grep -v Linux);

警告!:小心。如果你拼错 Linux,所有内容都会被删除。

I have done this, by adding a way to preserve one folder. I execute the command in a subfolder for removing folders in the parent one. It doesn't work for directory names with spaces:

  • parent folder => CleanTheSystem

  • subfolder_to_be_preserved => Linux

  • file in the subfolder_to_be_preserved => OK_Mackay.txt
    
  • subfolder_to_delete => Windows

  • too_many_files => ***
    
    
     rm -r $(ls -1 -d ../*/ | grep -v Linux);
    

    And this works for folder names with spaces:

     find ../. -type d -name "* *" -execdir bash -c 'mv "$1" "${1// /_}"' _ {} \; 2>/dev/null;rm -r $(ls -1 -d ../*/ | grep -v Linux);
    

Warning!: Be careful. If you misspell Linux, everything will be erased.

雄赳赳气昂昂 2024-11-13 09:27:24

一行:(

rm -R `ls -1 -d */`

反引号)

In one line:

rm -R `ls -1 -d */`

(backquotes)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文