注意
我似乎忘了提到这只会在重启后发生。一旦启动,如果我在启动后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
但是当我运行find命令时,提示符返回时没有结果或错误:
me@here:~ $ sudo find / -name *default.png
me@here:~ $
如果我再次运行find命令,我会得到以下结果:
me@here:~ $ sudo find / -name *default.png
/opt/retropie/supplementary/splashscreen/retropie-default.png
me@here:~ $
我做错了什么?我错过了一个包吗?程序是否已损坏?当我搜索某些内容并且没有结果时,我怎么知道它是否存在?请帮帮我!
更新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:~ $
更新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:~ $
因此,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:~ $
更新8:
sudo strace -o log1 find / -name '*default.png' and then sudo strace -o log2 find / -name '*default.png'
这些日志文件非常庞大。我在寻找什么呢?做猫登录| grep' x'其中x是'警告,警告,警告,错误,错误,错误。我还应该检查什么?日志文件log1 = 9.9M和log2 = 13M
我在两个日志文件的末尾都注意到log2中有不同的命令。 munmap(0x76f31000, 4096)
不在log1中。也许这就是失败所在?
答案 0 :(得分:-1)
你可以看到'发现' manpage得到答案。如果要在命令中使用正则表达式,则必须引用正则表达式。
您的命令应为sudo find / -name \*default.png
或sudo find / -name '*default.png'
NON-BUGS
“路径必须在表达式之前”错误消息
$ find . -name *.c -print
find: paths must precede expression
Usage: find [-H] [-L] [-P] [-Olevel] [-D ... [path...] [expression]
这是因为*.c
已被shell扩展,导致find实际收到这样的命令行(如果frcode.c locate.c word_io.c
文件夹中有.
个文件):
find . -name frcode.c locate.c word_io.c -print
该命令当然不会起作用。你不应该用这种方式做事,而应该用引号括起模式或者转义通配符:
$ find . -name '*.c' -print
$ find . -name \*.c -print