
我有一個從文件中提取單字的命令。
我想使用它提取的單字重命名該檔案。
我用來提取單字的命令,稍後我將使用它來重命名檔案名稱.txt,如下:
$ grep -e "some words" -e "other words" filename.txt | awk '{print $1}'
檔案名稱.txt內容範例:
dasdadas
asdasda
asdas
matched some words
asdas
asda
預期結果:檔案名稱.txt將更名為匹配.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
在單一管道中使用grep
and很少是一個好主意,因為can do everything可以:awk
awk
grep
awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt