我有一个列表(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
中每行的第一列命名。
答案 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
给定目录名称。