현재 약 1000개의 파일이 포함된 폴더에서 작업 중이며 해당 폴더에서 일부 파일 이름을 추출하고 해당 파일 이름이 포함된 다른 파일(구성 파일)을 만들어야 합니다.
기본적으로 이 폴더의 파일 이름 형식은 다음과 같습니다.
1_Apple_A_someword.txt
1_Apple_B_someword.txt
2_Apple_A_someword.txt
2_Apple_B_someword.txt
3_Apple_A_someword.txt
3_Apple_B_someword.txt
등등
1000_Apple_A_someword.txt
1000_Apple_B_someword.txt
"Apple_A"가 포함된 모든 파일을 추출하고 싶습니다. 또한 각 "Apple_A" 파일에 대해 값이 파일 이름인 "레이블"(Unix 변수)이 있는 다른 파일을 만들고 싶습니다. 또한 "레이블"은 파일 이름의 일부입니다("Apple"이라는 단어까지).
1_Apple=1_Apple_A_someword.txt
2_Apple=2_Apple_A_someword.txt
3_Apple=3_Apple_A_someword.txt
잠깐만요...까지
1000_Apple=1000_Apple_A_someword.txt
이 작업을 수행하는 한 줄짜리 Unix 명령을 알려주실 수 있나요? 어쩌면 "awk"와 "sed"를 사용할 수도 있습니다.
답변1
이 작업은 두 단계로 수행하겠습니다.
all_apple_a.dat
파일 이름에 "Apple_A"가 포함된 모든 파일을 나열하는 파일을 만듭니다 .
ls | grep Apple_A > all_apple_a.dat
labelled_apples.dat
파일 이름으로 "tag"라는 파일을 만듭니다 .
perl -pe 's/(\d+_Apple)(.*)/\1=\1\2/' all_apple_a.dat > labelled_apples.dat