从列表创建目录

时间:2015-10-01 04:14:46

标签: 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中每行的第一列命名。

2 个答案:

答案 0 :(得分:5)

试试这个:

cut -d " " -f 1 file | xargs echo mkdir

awk '{print $1}' file | xargs echo mkdir

如果一切正常,请删除echo

答案 1 :(得分:4)

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

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

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