bash - 从列表创建目录

标签 bash shell awk

我有一个列表(list.txt)

E001    Apples    Good stuff
E002    Pears    Nicely done
E091    Grapes    Bleah

我想使用第一列创建目录,所以我尝试了

#!/bin/sh
for num in $(seq 1 3) #Because the list is long
do
cat list.txt | cut -f1 | awk 'NR==$num{print}' > idx.tmp
idx=$(idx.tmp)
mkdir $idx
rm idx.tmp
done

这不仅体积庞大,而且不起作用 - 即使 cat list.txt | cut -f1 | awk 'NR==1 {print}'给我我想要的单个目录的名称(即 E001)

理想情况下,我希望获得在脚本运行的文件夹中创建的一堆空文件夹(听起来对吗?)使用 list.txt 中每一行的第一列命名.

最佳答案

一个简单的循环就足够了:

while read dirname others; do
    mkdir "$dirname"
done < list.txt

这一次从文件中读取一行,将 dirname 的值设置为第一个字段,将 others 的值设置为每一行的剩余部分,然后运行 ​​mkdir 使用给定的目录名称。

关于bash - 从列表创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879347/

相关文章:

linux - 构建自定义 shell

bash - 如何在bash中触发多个远程Shell脚本并发运行,然后等待它们完成?

postgresql - 将 PostgreSQL SQL 查询结果写入 CSV 格式的 Shell 脚本

regex - 如何打印与正则表达式匹配的 Linux 文件名部分

c++ - 解析和重新排列主机名

解析 awk 中的管道分隔输入

bash - awk 动态文档索引

linux - Crontab 不运行 bash/sh 脚本的某些部分

linux - 自动化 Linux 软件安装

string - Bash:从字符第一次出现到第二次出现的子字符串