我只是对 find 命令无法理解的一个小问题。
我可以这样做:
[root@hostnaoem# ❯❯❯ls /proc/*/fd
但是这给了我一个错误:
[root@hostnaoem# ❯❯❯ find /proc/*/fd -ls
find: `/proc/*/fd': No such file or directory
即使我使用" / proc / / fd" , / proc /" " / fd 或" / proc / * / fd"
我已经搜索了发现 shell扩展说了些什么,但我什么都没发现。有人可以告诉我为什么吗?
由于
答案 0 :(得分:0)
如果您只是RTFM,您将了解到find的语法是:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
通常使用的子集是:
find whereToSearch (-howToSearch arg)*
在fd
中找到名为/proc
的所有文件目录:
find /proc -name fd
-name
是最常见的howToSearch表达式:
-name pattern
Base of file name (the path with the leading directories removed) matches shell pattern pattern. The metacharacters (`*', `?', and `[]') match a `.' at the start of the base name (this is a change in findutils-4.2.2; see section STANDARDS CON‐ FORMANCE below). To ignore a directory and the files under it, use -prune; see an example in the description of -path. Braces are not recognised as being special, despite the fact that some shells including Bash imbue braces with a special meaning in shell patterns. The filename matching is performed with the use of the fnmatch(3) library function. Don't forget to enclose the pattern in quotes in order to protect it from expansion by the shell.
(注意最后一句)
如果您的模式包含斜杠,则需要-path
或-wholename
(同样的事情):
find /proc/ -wholename '/proc/[0-9]*/fd' 2>/dev/null
您可能想要使用的其他表达式是: -类型 -depth,-mindepth,-maxdepth -user,-uid
有关每个搜索表达式的详细信息,请参阅find(1)。如果您要搜索终端内手册(man find
或man 1 find
),可以使用/
字符进入搜索模式(如大多数GUI应用中的Ctrl+F
)
使用带有globbing(ls
)的*
通常是代码气味。除非您使用-d
标志,否则它将列出除匹配之外与glob模式匹配的目录的内容。
我发现echo globpattern
形式通常更方便查看glob模式匹配的结果。
答案 1 :(得分:0)
这项工作:
SET @newnum = 0;
Update wp_esp_ticket tix
INNER JOIN (
SELECT TKT_ID FROM `wp_esp_ticket` et
INNER JOIN wp_esp_datetime_ticket edtt on edtt.TKT_ID = et.TKT_ID
INNER JOIN wp_esp_datetime edt on edtt.DTT_ID = edt.DTT_ID
WHERE edt.EVT_ID = 1325
ORDER BY edt.DTT_EVT_start ASC
) b ON tix.TKT_ID = b.TKT_ID
SET tix.TKT_order = @newnum:=@newnum + 1
问候。