我正在努力寻找创建一系列目录的正确语法。假设有 50 个。这些目录中都会有一个索引文件。我有这个 Bash 代码,但似乎无法弄清楚代码语法以使其工作。有人可以告诉我吗?谢谢
for f in foo/bar{00..50}; do
mkdir -p $f && printf "text\n goes\n here" > $f/index
答案1
更简单的方法:
mkdir -p foo/bar{00..50}
$ ls foo/
bar00 bar02 bar04 bar06 bar08 bar10 bar12 bar14 bar16 bar18 bar20 bar22 bar24 bar26 bar28 bar30 bar32 bar34 bar36 bar38 bar40 bar42 bar44 bar46 bar48 bar50
bar01 bar03 bar05 bar07 bar09 bar11 bar13 bar15 bar17 bar19 bar21 bar23 bar25 bar27 bar29 bar31 bar33 bar35 bar37 bar39 bar41 bar43 bar45 bar47 bar49
因此第一部分可以是:
mkdir -p foo/bar{00..50}
然后您需要创建的只是包含文本的“索引”文件。
关于第二部分,我将使用参考文件
touch file2
vi file2 (and add content)
shop -s globstar && for f in **/*(/); do cp -p file2 "$f/index"; done
答案2
bash for 循环语法是
for ...; do ...; done
所以
for f in foo/bar{00..10}; do
mkdir -p $f && printf "text\n goes\n here\n" > $f/index
done
给出:
$ tree foo
foo
├── bar00
│ └── index
├── bar01
│ └── index
├── bar02
│ └── index
├── bar03
│ └── index
├── bar04
│ └── index
├── bar05
│ └── index
├── bar06
│ └── index
├── bar07
│ └── index
├── bar08
│ └── index
├── bar09
│ └── index
└── bar10
└── index
11 directories, 11 files
答案3
这就是我所做的
创建子目录
mkdir -p ./blabla{1..10}
将所需文件(在本例中名为 indexmultitest.html)复制到父目录 cp /home/antony/Downloads/Indextests/indexmultitest.html /home/antony/Downloads/blabla/
进入父目录 cd /home/antony/Downloads/blabla/
将所需文件复制到 d 目录中 */; do cp indexmultitest.html "$d"; done
这将为您提供多个目录,每个目录下都有指定的文件。
现在的问题是,如果我想创建一系列没有可预测名称的目录,例如 blabla01、blabla02、blabla03 等,以便有人能猜出我服务器上目录的名称???