用于将基于字母的文件插入目录的 Bash 脚本

用于将基于字母的文件插入目录的 Bash 脚本

我需要做的是创建一个脚本,该脚本创建 15 个目录(命名为 1 到 15),并且在每个目录中我必须为其分配一个字母(按字母顺序排列)。

所以我运行脚本后应该是这样的:

目录1包含字母A;目录 2 包含 B 等等,直到它到达数字 15 并且其中包含字母 O.. 之后它应该停止。

答案1

不是 bash,而是 awk,还有一句俏皮话。

echo {A..O} | xargs -n 1 | awk '{system("mkdir "NR" && touch "NR"/"$1)}'

答案2

letters=(0 A B C D E F G H I J K L M N O)
i=1
while [ ${i} -le 15 ]
do
  mkdir ${i}
  touch ${i}/${letters[${i}]}
  (( i++ ))
done

说明:letters是一个数组,其中包含与数字对应的字母。数组中的第一个条目位于索引 0 处。由于您的数字从 1 开始,所以我放置了一个填充字符。不管是什么都没关系

i在 1 到 15 之间更改值时,它将执行目录名称的mkdir命令。i

然后在每个目录中,它将创建一个文件,其名称将是数组中相应的letters字母

答案3

这就是我创建包含具有相应字母的文件的目录的方法:

 #!/bin/bash 
 declare -r LETTERS=(A B C D E F G H I J K L M N O) # Read Only Letters Array
 declare -i COUNTER=0 # Integer Variable "COUNTER"

 while [  $COUNTER -lt 15 ]; do # While Counter Less Than 15 Do...
     COUNTER+=1 # Add 1 to counter
     mkdir $COUNTER # Make the directory
     echo > $COUNTER/${LETTERS[$COUNTER-1]} # Create the file
 done

我使用 echo 的原因是我过去在触摸方面遇到过问题(而 echo 做得很好)

我最初本想使用 switch case(我太脱离实际了),但我使用 MelBurslan 的示例来使用数组。

答案4

#!/bin/bash
set   -- {A..O}
j=0
for   i
do    j=$((j+1))
      mkdir "Dir$j"
      touch "Dir$j/$i"
done

该代码使用位置参数来完成其工作,因此这些参数被删除(没什么重要的,但很高兴知道)。

相关内容