Linux

為什麼這個 find exec ls 停止顯示其中一個文件?

  • November 9, 2017

我有一個 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不再匹配。

引用自:https://unix.stackexchange.com/questions/403580