我有一种情况,我想创建一个主文件夹,子文件夹,子文件夹以及该子文件夹中的文件
我的文本文件包含以下格式
ABC|A1|B1|A.txt
ABC|BB|CD|AF|JIDS.txt
ABC|BB|CDE|AFD|KL|JI.pdf
上面的文件需要以for循环的形式传递。让我们以第一个记录为例
ABC|A1|B1|A.txt
ABC->主文件夹
A1->子文件夹
B1->子文件夹
A.txt->是文件
应创建此格式的文件夹
ABC{Main folder}-->
|=> A1 {Subfolder}-->
|=> B1 {child folder}-->
|=>A.txt {file inside child folder}
对于每一行,将所有|
-characters更改/
为一个路径名,创建目录,并在路径名末尾创建文件。
tr '|' '/' <file |
while IFS= read -r pathname; do
mkdir -p "$(dirname "$pathname")" &&
touch "$pathname"
done
结果:
$ tree ABC
ABC
|-- A1
| `-- B1
| `-- A.txt
`-- BB
|-- CD
| `-- AF
| `-- JIDS.txt
`-- CDE
`-- AFD
`-- KL
`-- JI.pdf
8 directories, 3 files
解释:
tr
命令将用-替换所有|
-character /
,并产生类似以下内容的内容:ABC/A1/B1/A.txt
ABC/BB/CD/AF/JIDS.txt
ABC/BB/CDE/AFD/KL/JI.pdf
tr
逐行读取上述输出while
。在每次迭代中,$pathname
将在此输出中显示一行。dirname "$pathname"
返回的目录部分$pathname
(例如ABC/A1/B1
,第一次迭代)。在用于mkdir -p
创建可能丢失的目录的调用中使用它。创建中间目录的-p
选项mkdir
。touch
用于实际上$pathname
在刚刚创建的目录中创建所引用的文件mkdir
。&&
之间mkdir
并touch
确保我们不尝试在一个目录下创建一个文件mkdir
(无论何种原因)无法创建。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句