파일에서 단어를 추출하는 명령이 있습니다.
추출한 단어를 사용하여 파일 이름을 바꾸고 싶습니다.
나중에 이름을 바꾸는 데 사용할 단어를 추출하는 데 사용한 명령파일명.txt,다음과 같이:
$ grep -e "some words" -e "other words" filename.txt | awk '{print $1}'
파일명.txt콘텐츠 예시:
dasdadas
asdasda
asdas
matched some words
asdas
asda
예상되는 결과:파일명.txt이름이 변경됩니다match.txt.
한 줄 명령으로 이 작업을 수행할 수 있었으면 좋겠습니다.
이것은 작동하지 않지만 다음과 같을 수도 있습니다.
mv filename.txt $(grep -e "some words" -e "other words" filename.txt | awk '{print $1}').txt
Note: Im certain that there will only be one match with the
grep`. 감사해요.
답변1
#!/bin/bash
old_file_name=$1 # take an argument for the file you want to muck with
new_file_name=$(grep -e "some words" -e "other words" "${old_file_name}" | awk '{print $1}' | head -n 1).txt
mv "$old_file_name" "$new_file_name"
답변2
단일 파이프에서 and 를 사용하는 것은 grep
모든 작업을 수행할 수 있기 때문에 좋은 생각이 아닙니다.awk
awk
grep
awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt