【问题标题】:deleting multiple numbered folders in the terminal删除终端中的多个编号文件夹
【发布时间】:2017-07-04 07:54:09
【问题描述】:

例如,我有编号为 0-1000 的目录。例如,我想删除 400-699 范围内的目录,以及它们在终端上的所有内容。有没有办法做到这一点,而我不必执行 rm -rf XXX ,其中 XXX 是目录号码?

我看过这个帖子link,但我们的编号系统有点不同。

【问题讨论】:

  • 文件夹如何编号?
  • 它们的编号如下:0, 1, 2, 3, 4, 5, ..., 1000
  • 是的,但是全名和模式如何?因为如果名称只是 1、2、3、4、... 1000。那么命令 rm -rf {start..end} 将起作用。
  • 这些是全名,没有任何字符串。有的有1位数、2位数、3位数等
  • 另见Standard Wildcards (globbing patterns)rm -rf 4?? 应该匹配所有 400 系列目录。类似的应该适用于 500 和 600 系列。但它们也会匹配,比如40a40b 等。

标签: linux ubuntu terminal


【解决方案1】:

可以像这样使用 bash 循环来完成:

for i in `seq 400 699`;
do
rm -rf $i
done

请确保每次使用rm -rf。在 Linux 中无法撤消。

【讨论】:

  • seq 命令在某些版本的 Bash 中不可用。我在某些 OS X 版本上遇到了麻烦。而且它们不是 OS X 的古老版本。
  • 那你可以试试{400..699}jot 400 699 代替吗? (因为我现在在 Ubuntu 上,所以我没有尝试过)
【解决方案2】:

使用通配符,这样您就不必这样做 300 次。试试这个:rm -rf 4* 5* 6*

【讨论】:

  • 然后试试这个:rm -rf 4[0-9][0-9] 5[0-9][0-9] 6[0-9][0-9]
【解决方案3】:

使用 Python 的另一种解决方案:

rm -rf $(python -c "print ' '.join(str(_) for _ in range(400, 700))")

小心rm -rf,在执行之前,验证命令。

echo $(python -c "print ' '.join(str(_) for _ in range(400, 700))")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多