find
被表現得好像我沒有引述-name模式通配符,但我引述他們:gnu發現怪異:文件名通配符被破壞?
/var/log # find . -name '*.gz'
find: paths must precede expression: dmesg.1.gz
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
/var/log # find . -name dmesg.1.gz
./dmesg.1.gz
/var/log # echo '*.gz'
*.gz
我知道這用於正常工作 - ,它仍然在我的其他機器。什麼會導致這種行爲?
我的bash的版本:GNU的bash,版本4.2.37(1)-release(1486-PC-Linux的GNU)
我發現版本:發現(GNU的findutils)4.4.2
/proc/version:Linux版本3.2.0-4-686-pae([email protected])(gcc版本4.6.3(Debian 4.6.3-14))#1 SMP Debian 3.2.60-1 + deb7u3
您是否檢查過名爲'find'的別名,函數或腳本,它們處理錯誤的參數? –
@JonathanLeffler:只要'which find'返回'/ usr/bin/find'就像預期的那樣。 – RashaMatt
這很有用...嘗試'別名'來查看別名,並且...它是'typeset -f'來查看函數嗎? (是的,'typeset -f'或者 - 本地Bash方式,而不是Korn shell兼容方式 - 'declare -f'。)由於'find'的行爲與'echo'不同,所以必須有'find'很奇怪。你也可以嘗試'查找命令。 -name'* .gz''應該運行該命令而不是別名或函數 - 或者確實是'/ usr/bin/find。 -name'* .gz'' –