Linux
如何堆疊萬用字元以定位特定文件?
我想定位所有名為
fooxxxbarxxx
. 所有這些文件的共同點是它包含foo
和bar
.我試過使用
*foo*bar*
,*foo**bar*
但它不起作用。具體來說,我正在嘗試創建指向這些文件的軟連結,其餘程式碼已經可以用於更直接的執行(查看 的所有子文件夾
path
):
shopt -s globstar
ln -s /path/**/*foo*bar* .
謝謝
在
bash
shell 中,您需要extglob
為此 OR 類型的 shell 擴展使用選項。shopt -s extglob nullglob
然後做 globbing
ln -s /path/**/@(*foo*bar*|*bar*foo*)
POSIXly:
find /path -name '.*' -prune -o -name '*foo*' -name '*bar*' -exec sh -c ' ln -s "$@" .' sh {} +