デフォルトフォルダサブフォルダサブフォルダを作成し、そのサブフォルダにファイルを作成したいシナリオがあります。
私のテキストファイルには次の形式が含まれています。
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}
ベストアンサー1
各行に対して|
すべての文字を変更して/
パス名を形成し、ディレクトリを作成し、パス名の末尾にファイルを生成します。
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
置き換えて生成します。|
/
ABC/A1/B1/A.txt ABC/BB/CD/AF/JIDS.txt ABC/BB/CDE/AFD/KL/JI.pdf
- 上記の出力は
tr
ループを介して1行ずつ読み取られますwhile
。各反復ごとに$pathname
この出力の行が生成されます。 - 各反復で
dirname "$pathname"
ディレクトリセクションを返します$pathname
(たとえば、ABC/A1/B1
最初の反復の場合)。これはmkdir -p
、欠落している可能性があるディレクトリへの呼び出しを作成するために使用されます。中間ディレクトリを生成-p
するオプションmkdir
。 touch
$pathname
作成されたディレクトリから参照されるファイルを実際に生成するために使用されますmkdir
。- との間の文字は、
&&
(何らかの理由で)作成できないディレクトリにファイルを生成しようとしないことを保証します。mkdir
touch
mkdir