我有一个 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 .
向上键 + Enter ...以为我现在会看到 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
答案1
你需要报价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
不再匹配。