Linux
為什麼這個 find exec ls 停止顯示其中一個文件?
我有一個 find + ls 向我展示了幾個文件的 .sh 和 .sh.bak 。
我複制了其中一個,以為我會有 3 個文件,但是
ls 退出顯示其中一個, .sh.bak
我從歷史中重複 find + ls 並且我已經比較了副本
查看2個文件:
[root@localhost jeos]# find / -name del-non-*-locales.sh* -execdir ls -lh {} \; -rwxr-xr-x. 1 root root 4.4K Dec 17 2016 /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak -rwxr-xr-x. 1 root root 4.4K Dec 17 2016 /root/proj/host.setup/manual/del-non-english-locales.sh
已複製 1
[root@localhost jeos]# cp ~/proj/host.setup/manual/del-non-english-locales.sh .
向上箭頭 + 輸入 …我想我現在會看到 3 個文件
[root@localhost jeos]# find / -name del-non-*-locales.sh* -execdir ls -lh {} \; -rwxr-xr-x. 1 root root 4.4K Dec 17 2016 /root/proj/host.setup/manual/del-non-english-locales.sh -rwxr-xr-x. 1 root root 4.4K Nov 9 11:05 /root/proj/jeos/del-non-english-locales.sh
find + ls 沒有改變&它退出顯示的文件在這裡:
[root@localhost jeos]# ls -lh /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak -rwxr-xr-x. 1 root root 4.4K Dec 17 2016 /root/proj/vm/locale/backups/del-non-eng-locales.sh.bak
你需要報價
del-non-*-locales.sh*
。第一次執行有效,因為目前目錄中沒有任何文件匹配
del-non-*-locales.sh*
,因此預設情況下,模式會擴展為自身(帶有星號和全部)。複製
~/proj/host.setup/manual/del-non-english-locales.sh
到目前目錄後,del-non-*-locales.sh*
展開為del-non-english-locales.sh
,因此您實際上是在搜尋該確切名稱,而不是del-non-*-locales.sh*
. 這就是為什麼del-non-eng-locales.sh.bak
不再匹配。