我有一个列表(list.txt)
E001 Apples Good stuff
E002 Pears Nicely done
E091 Grapes Bleah
Run Code Online (Sandbox Code Playgroud)
我想使用第一列创建目录,所以我尝试了
#!/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
Run Code Online (Sandbox Code Playgroud)
这不仅是可以想象的笨重,它不起作用 - 即使cat list.txt | cut -f1 | awk 'NR==1 {print}'给我我想要的个人目录的名称(即E001)
理想情况下,我希望获得在脚本运行的文件夹中创建的一堆空文件夹(听起来不错吗?),使用每行的第一列命名list.txt.
一个简单的循环就足够了:
while read dirname others; do
mkdir "$dirname"
done < list.txt
Run Code Online (Sandbox Code Playgroud)
这一次从文件中读取一行,将 的值设置为每行dirname的第一个字段和others剩余部分,并mkdir以给定的目录名称运行。
试试这个:
cut -d " " -f 1 file | xargs echo mkdir
Run Code Online (Sandbox Code Playgroud)
要么
awk '{print $1}' file | xargs echo mkdir
Run Code Online (Sandbox Code Playgroud)
如果一切看起来都没问题echo.