Bash
awk 傳遞變數,帶空格的文件
我是新手,我有小問題,我自己無法解決。這是我面臨的問題:
- 我正在嘗試查找名稱中帶有空格的文件。
這部分工作:
find $(pwd) -type d |grep " "
- 然後我使用
awk
列印整個文件名並用所需的組名“手動輸入”更改它find $(pwd) |grep " " |awk '{print "changegrp developers \""$0"\""}'
- 當我嘗試將組名
developers
作為變數時,它並沒有按預期工作。find $(pwd) |grep " " |awk group="developers" '{print "changegrp group \""$0"\""}'
我真的不明白語法。手動鍵入的組是如何工作的,當我將其設為變數時,它正在工作。我知道由於忘記單引號或雙引號等,這種事情會讓人頭疼。
你能指出我在哪裡做錯了嗎?
要將
group
awk 作為您需要的變數傳遞給 awk-v group="developers"
並讓 awk 將其視為變數(而不是字元串文字),它需要在雙引號之外,例如awk -v group="developers" '{print "changegrp " group " \""$0"\""}'
但是,您可以通過使用類似的東西來避免很多麻煩
find . -type d -name '* *' -exec changegrp developers {} \;
或(如果
changegroup
支持多個文件參數 - 我不熟悉特定命令)find . -type d -name '* *' -exec changegrp developers {} +
也可以看看