注意
我似乎忘了提到这只会在重启后发生.一旦启动,如果我在启动后5分钟或启动后3天运行命令并不重要.但一旦find运行,它将始终找到它(即使在5分钟或3天后).
我有一个运行Linux 4.9.17-v7 +的Raspberry Pi 3.我不知道为什么会发生这种情况,但每次我登录机器并尝试查找已知的png文件时,提示都会返回,就好像没有结果一样.知道文件存在,我再次运行相同的命令(向上箭头键),它返回正确的结果.
如何使用find命令获得2个不同的结果(或不一致的结果)?可能有一个我错过的包裹?
该文件存在的证明:
me@here:~ $ ls -la /opt/retropie/supplementary/splashscreen/retropie-default.png
-rw-r--r-- 1 root root 1168926 Mar 30 19:51 ls -la /opt/retropie/supplementary/splashscreen/retropie-default.png
Run Code Online (Sandbox Code Playgroud)
但是当我运行find命令时,提示符返回时没有结果或错误:
me@here:~ $ sudo find / -name *default.png
me@here:~ $
Run Code Online (Sandbox Code Playgroud)
如果我再次运行find命令,我会得到以下结果:
me@here:~ $ sudo find / -name *default.png
/opt/retropie/supplementary/splashscreen/retropie-default.png
me@here:~ $
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我错过了一个包吗?程序是否已损坏?当我在寻找某些东西而我没有得到任何结果时,我怎么知道它是否存在?请帮我!
更新1: 评论请求.
使用-name引用的参数运行命令:
me@here:~ $ sudo find / -name '*default.png'
me@here:~ $ sudo find / -name '*default.png'
/opt/retropie/supplementary/splashscreen/retropie-default.png
me@here:~ $
Run Code Online (Sandbox Code Playgroud)
更新2:
将SD卡带到另一台计算机,安装它并再次进行搜索sudo find /mnt/flash -name '*default.png'产生了正确的结果.所以它必须是操作系统或可能是硬件问题.
更新3:
我在Raspberry Pi 3上加载了一个新的操作系统,并使用了令人讨厌的'sd卡/操作系统'并将其安装在Raspberry Pi 3上.这是为了查看它是否是硬件错误. sudo find /mnt/flash -name '*default.png'产生了正确的结果.所以它必须是操作系统.
最初,我拿了RetroPie v4.2,阻止它自动运行.拿起我的娱乐软件并进行编译.将其设置为与lirc一起在启动时运行.娱乐软件中的一个选项是运行Emulationstation(您注释掉的命令可以在启动时停止自动运行仿真软件).一切正常.所以我不知道会导致这个问题的原因.
据我所知,该文件所包含的/ opt目录与其他任何目录没有什么不同.
更新4:
好的,在搜索'*default.png'之前,我做了sudo find / -name 'hostname',它返回了正确的结果.然后我跑了sudo find / -name '*default',它找到了它.所以只有第一个find命令可能会失败.后来的一切似乎都有效.
更新5:
我能够找到另一个操作系统,其中第一个find并不总是有效.我有另一个运行Arch Linux 4.1.7-2-ARCH的Raspberry Pi 1 Model B. 它不包含我一直在寻找的png,但无论如何我都在搜索它.
me@there:~ $ sudo find / -name '*default.png'
me@there:~ $ sudo find / -name '*default.png'
/usr/share/icons/Adwaita/256x256/status/avatar-default.png
/usr/share/icons/Adwaita/8x8/emblems/emblem-default.png
/usr/share/icons/Adwaita/16x16/emblems/emblem-default.png
/usr/share/icons/Adwaita/16x16/status/avatar-default.png
/usr/share/icons/Adwaita/22x22/emblems/emblem-default.png
/usr/share/icons/Adwaita/22x22/status/avatar-default.png
/usr/share/icons/Adwaita/32x32/emblems/emblem-default.png
/usr/share/icons/Adwaita/32x32/status/avatar-default.png
/usr/share/icons/Adwaita/48x48/emblems/emblem-default.png
/usr/share/icons/Adwaita/48x48/status/avatar-default.png
/usr/share/icons/Adwaita/24x24/emblems/emblem-default.png
/usr/share/icons/Adwaita/24x24/status/avatar-default.png
/usr/share/gtk-doc/html/gtk3/window-default.png
me@there:~ $
Run Code Online (Sandbox Code Playgroud)
因此,2个不同的操作系统和2个不同的Raspberry Pi具有相同的问题.我在我的Banana Pi上测试了这个,结果第一次是正确的.
更新6:
好的,一些评论的更新.是的,该文件retropie-default.png位于根目录中,并且系统上的任何位置都没有autofs/unionfs.
sudo find /opt/retropie/supplementary/splashscreen/ -name '*default.png' 行为方式不同,并产生正确的结果.
sudo date两次运行会产生正确的结果.
请阅读本文开头的注释,因为我忘记了一个重点.
我今天晚些时候会跑步.
更新7:
在find命令仍产生相同结果之前列出目录.
me@here:~ $ ls /opt/retropie/supplementary/splashscreen/
LICENSE retropie-2015-carbon-video.mp4
README.md retropie-2015.png
retropie-2013.png retropie-default-16x10.png
retropie-2014.png retropie-default-4x3.png
retropie-2015-4x3.png retropie-default.png
retropie-2015-carbon-video-4x3.mp4
me@here:~ $ sudo find / -name '*2013.png'
me@here:~ $ sudo find / -name '*2013.png'
/opt/retropie/supplementary/splashscreen/retropie-2013.png
me@here:~ $
Run Code Online (Sandbox Code Playgroud)
更新8:
sudo strace -o log1 find / -name '*default.png' and then sudo strace -o log2 find / -name '*default.png' 这些日志文件很大.我在寻找什么呢?做cat logn | grep'x',其中x是'警告,警告,警告,错误,错误,错误.我还应该检查什么?日志文件log1 = 9.9M和log2 = 13M存在大小差异
我在两个日志文件的末尾都注意到log2中有不同的命令.munmap(0x76f31000, 4096)不在log1中.也许这就是失败所在?
小智 1
您可以查看“查找”联机帮助页来获取答案。如果您想在命令中使用正则表达式,则必须引用正则表达式。\n您的命令应该是sudo find / -name \\*default.png或sudo find / -name '*default.png'
无缺陷
\n\n\xe2\x80\x9c 路径必须位于表达式\xe2\x80\x9d 错误消息之前
\n\n\n$ find . -name *.c -print\nfind: paths must precede expression\nUsage: find [-H] [-L] [-P] [-Olevel] [-D ... [path...] [expression]\n
发生这种情况是因为*.cshell 已扩展,导致 find 实际上收到如下命令行(如果文件夹frcode.c locate.c word_io.c中有文件.):
find . -name frcode.c locate.c word_io.c -print
这个命令当然是行不通的。您应该将模式括在引号中或转义通配符,而不是这样做:
\n\n\n$ find . -name '*.c' -print\n$ find . -name \\*.c -print\n
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |