「build and execute command lines from standard input」這個 xargs 的 Man Page 上的說明,阿舍沒有看很瞭解,只知道 xargs 可以透過管道符號(|)來傳資料給 xargs 指令處理,但是,不知道怎麼去使用收到的資料,直到阿舍看到類似下面這樣的例子後才恍然大悟哩 !
$ ls ./bak/*.txt | xargs rm
xargs 會把收到的資料送給 xargs 後的指令來當參數使用,以上面這行指令來說,會把 ls 列出來的檔案清單透過 xargs 指令來傳給 rm 指令當作要被刪除的檔案清單哩 ! 可是,以上面這個指令來說,rm 指令不是自己就可以用下面這行指令來刪除了嗎 ?
$ rm ./bak/*.txt
是啊 ! 阿舍也有相同的疑問哩 ! 為什麼還會需要用到 xargs 指令哩 ? 喔 ! 阿舍運氣還不錯,有遇到要把多個在不同資料夾下的 png 圖檔都搬到另一個相同的資料夾來放,就有機會運用一下 xargs 指令,然後,就懂了哩 ! 像阿舍這種要搬不同資料夾的檔案的需求,一般只用 mv 指令就要打好幾次指令,而如果用 find 指令搭配 xargs 指令的話,就只要像下面這樣,一行就可以搞定囉 !
$ find ~/ -name *.png -type f | xargs -I % mv % ./image
雖然,上面這一行指令看來有點小複雜,但是,其實,就是透過 find 指令去找出 *.png 檔案 ( -type f 選項是限定只傳回檔案而不包資料夾),然後,經由 xargs 指令傳給 mv 指令當來源檔案清單來把檔案搬到 image 資料夾去哩 !
xargs 指令操作範例 |
其中,xargs 指令後面的 -I 選項是用來告訴 xargs 指令用 % 符號來當作 find 傳進來的檔案清單,所以,後面的 mv 指令就可以用 % 符號當作來源檔案使用哩 ! 不一定要用 % 符號,可以用別的,而如果是像 rm 這種不用有二個參數的指令,就不需要用到 -I 選項哩 ! ...
後來,阿舍發現,其實這個 xargs 指令還滿實用的,只要是需要用到清單的指令,都可以先用其它程式先處理過,然後,再交由 xargs 指令來給其它指令當參數執行,這樣,就可以省很多時間,少打不少字哩 ! ... 供參囉 !
推薦閱讀
- 問題沒解決嗎? 更多的 Ubuntu 教學在 這裡
- Prompt Injection: 提示詞注入安全漏洞
- 二款 Mac 無痛安裝的 Stable Diffusion 軟體
- 用 AI 寫部落格文章好不好 ?
- 沒有免費的 Midjourney 和 Colab 又不想花錢怎麼辦 ?
- 不學 Prompt 技巧也能善用 ChatGPT 的簡單方法
- 企業 AI 應用:不只是聊天機器人
- Automatic 比 Automatic1111 更好用 ? 都是 Stable Diffusion WebUI
- Stable Diffusion 的 /describe 圖生文功能
- AI 畫出讓人可怖的美圖 !
有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁
沒有留言 :
張貼留言
歡迎留言提問和討論 .... 😁