【问题标题】:Fastest way to create 1000 folders one inside another and put a file in the last folder在另一个文件夹中创建 1000 个文件夹并将文件放在最后一个文件夹中的最快方法
【发布时间】:2012-06-19 11:50:48
【问题描述】:

我编写了一个用于搜索特定文件的代码,其中用户输入 starting pathfilename ,然后如果文件存在则程序打印其详细信息,否则打印 not found

代码基于递归。我想用一个大的文件夹层次结构来测试它,比如说 1000 个文件夹,一个在另一个文件夹中,然后在第 1000 个文件夹中放置一个名为 david.txt 的文件。

如何在接下来的 3 小时内不创建 1000 次文件夹?

代码写在C,在Ubuntu下。

谢谢

【问题讨论】:

  • @ErickWong:确实:python -c 'print "tst/" * 1000' | xargs mkdir -p
  • 您需要保持文件夹名称简短 - Linux 支持最多 4096 个字符的路径。我不确定一旦你超过了那个标记,事情会/不会奏效。

标签: c linux file ubuntu hierarchy


【解决方案1】:

在你的 shell 中输入以下内容:

mkdir -p folder$( seq -s "/folder" 999 )1000

然后就可以进入这个文件夹了:

cd folder$( seq -s "/folder" 999 )1000

并创建一个文件:

touch david.txt

然后回到你之前的目录:

cd -

【讨论】:

  • 谢谢,但是1st 命令的输出是:a@ubuntu:~/Desktop$ mkdir -p folder$( seq -s "/folder" -t 1000 999 ) seq: invalid option -- 't' Try seq --help' for more information.
  • @ron - 那么您的发行版中的“seq”可能不支持-t 参数。使用更新版本
  • 我会这样做的 - 谢谢。顺便说一句,我如何访问1000th 文件夹来创建文件?因为在输入您编写的 2nd 命令后,我得到了 File name too long 。又是 10 倍!
  • @ron - 请参阅我对您的问题的评论 - 您需要保持文件夹名称简短以避免超过 Linux 的路径名大小限制。
【解决方案2】:

正如一些 cmets 所述,我会将 shell 用于此类目的:

#!/bin/sh

for i in $(seq 1000)
do
    mkdir tst
    cd tst
done
touch david.txt

关于一个相关主题,让我建议this article,它展示了有时 shell 脚本如何在更短的开发时间内解决您的问题。专门针对像这样的 ad-hoc 问题。

【讨论】:

    【解决方案3】:

    简单的 bash 循环:

    $ pushd .
    $ for i in {1..1000}; do
          mkdir d$i;
          cd d$i;
      done
    
    $ touch david.txt
    $ popd
    

    【讨论】:

      【解决方案4】:

      (几乎)使用相同的代码来创建文件夹和文件。一旦开始工作,搜索/报告也几乎完成。这是一种自我测试:)

      【讨论】:

        猜你喜欢
        • 2019-02-21
        • 1970-01-01
        • 2013-07-17
        • 2017-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 2014-05-20
        相关资源
        最近更新 更多