
根據我的理解,我想使用comm -23 file1 file2
. file1 是 的結果find
,file2 是cut -c43- list
.我是否可以將其寫為 1 行而不使用任何文件(除了我命名的列表)?
答案1
進程替換是你的朋友:
$ comm -23 <(find /dir -name 'something') <(cut -c43- list)
該格式<(command)
將臨時檔案描述符套用至command
整個<( )
檔案comm
(或任何其他命令)。
看有關流程替換的更多資訊請參閱此處。另請檢查man bash
:
進程替換
進程替換允許使用檔案名稱引用進程的輸入或輸出。它採用<(列表)或>(列表)的形式。進程列表異步運行,其輸入或輸出顯示為檔案名稱。該檔案名稱作為擴展結果作為參數傳遞給當前命令。如果使用 >(list) 形式,寫入檔案將為清單提供輸入。如果使用 <(list) 形式,則應讀取作為參數傳遞的檔案以獲得 list 的輸出。支援命名管道 (FIFO) 或 /dev/fd 命名開啟檔案方法的系統支援進程替換。