문자 기반 파일을 디렉토리에 삽입하기 위한 Bash 스크립트 [닫기]

문자 기반 파일을 디렉토리에 삽입하기 위한 Bash 스크립트 [닫기]

내가 해야 할 일은 15개의 디렉터리(1부터 15까지 이름 지정)를 생성하는 스크립트를 만들고 각 디렉터리에 문자(알파벳순)를 할당해야 하는 것입니다.

따라서 스크립트를 실행한 후에는 다음과 같아야 합니다.

디렉토리 1에는 문자 A가 포함되어 있고 디렉토리 2에는 B가 포함되어 있으며 숫자 15에 도달하고 문자 O.가 포함될 때까지 계속됩니다.

답변1

bash가 아니라 awk와 quip입니다.

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

설명: 문자는 숫자에 해당하는 문자를 포함하는 배열입니다. 배열의 첫 번째 항목은 인덱스 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

내가 에코를 사용하는 이유는 과거에 터치에 문제가 있었기 때문입니다(그리고 에코는 훌륭하게 작동합니다).

원래는 스위치 케이스를 사용하고 싶었지만(너무 연락이 잘 안 되서) 배열 사용에 MelBurslan의 예제를 사용했습니다.

답변4

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

코드는 작업을 수행하기 위해 위치 매개변수를 사용하므로 이러한 매개변수는 제거됩니다(중요하지는 않지만 알아두면 좋습니다).

관련 정보