根据文件内容创建文件夹

时间:2019-02-12 10:18:55

标签: bash directory

我有这样的txt文件:

f1 3
f2 4
f3 2

我必须在bash中使用名称f1创建文件夹(目录),并使用3个带有随机名称的子文件夹,然后使用名称f2创建文件夹,并使用4个具有随机名称的子文件夹,等等。

我做了以下尝试,但它只为我创建了文件夹,没有子文件夹。

#!/bin/bash

dir=/home/bae/Desktop/egzamin/5
filename=$dir/nazwy.txt

cut -d " " -f 1 $fi

3 个答案:

答案 0 :(得分:1)

while read dir count
do
    # some sanity checks
    [[ $dir = "" || $count = "" ]] && continue
    ((count<0)) && continue

    mkdir -p "$dir" # only needed for count==0
    for (( i=0; i<count; i++ ))
    do 
        mkdir -p "$dir/$RANDOM-$i"
    done
done < TEXTFILE

答案 1 :(得分:0)

<txt xargs -l sh -c 'mkdir "$1"; cd "$1"; mkdir $(seq "$2" | xargs -l sh -c "echo \$RANDOM")' --
  • <txt-将名为txt的文件中的内容输入到命令的标准输入中
  • xargs -l-为每行运行命令,并将该行作为命令的参数传递
  • mkdir "$1"-创建目录,并从文件的第一列进入cd。
  • seq "$2"-输出从1到第二列作为第二个参数传递的数字顺序递增的数字
  • xargs -l sh -c "echo \$RANDOM"-只是用于为输入的每一行输出随机数的快捷方式。
  • cd "$1"; mkdir $(....)-在文件夹中创建文件

答案 2 :(得分:0)

您追求的是这样的:

while read -r dirname count; do
   mkdir -p "$dirname"
   for (( i=0; i < $count; ++i)); do mktemp -d -p "$dirname"; done
done < textfile

这将逐行读取文件,并读取两个参数dirnamecount。它将首先创建父目录,然后运行循环以使用mktemp创建请求的子目录。看一下man mktemp,了解用于操纵子目录命名的各种选项。

注意::如果文本文件中可能存在“空”行或错误的条目,则您可能希望合并来自Wiimm的健全性检查。