Bash
如何使用 bash 在不同目錄中選擇特定文件?
我想在目錄中的某些文件上列出(或刪除或執行一些其他操作),如下所示:
$ ls /opt/somedir/ aa bb cc aa.txt bb.txt cc.txt $ ls /opt/somedir/(aa|bb|cc) ## pseudo-bash :p aa bb cc
我怎樣才能做到這一點(沒有先 cd-ing 到目錄)?
使用花括號:
ls /opt/somedir/{aa,bb,cc}
有關大括號擴展的更多資訊,請閱讀。
在 bash 下,執行
shopt -s extglob
(或將其放入您的 .bash文件中~/.bashrc
),您可以使用其他模式來提供具有不尋常語法的正則表達式(繼承自 ksh)。當然,您也可以在 ksh 中使用這些模式,也可以在 zsh after 中使用這些模式setopt ksh_glob
。$ shopt -s extglob $ ls /opt/somedir/@(aa|bb|cc|doesnotexist) /opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
在 zsh 中,可以直接
(foo|bar)
作為模式使用。% ls /opt/somedir/(aa|bb|cc|doesnotexist) /opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
請注意,該命令是使用完整路徑呼叫的。如果要使用短路徑呼叫命令,則需要以某種方式更改目錄,
(cd /opt/somedir && somecommand aa bb cc)
這是迄今為止最簡單的方法。