亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2095 | 回復(fù): 6
打印 上一主題 下一主題

[文本處理] find命令的*問題 [復(fù)制鏈接]

論壇徽章:
1
15-16賽季CBA聯(lián)賽之福建
日期:2016-01-19 11:22:51
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-11-14 21:12 |只看該作者 |倒序?yàn)g覽
本帖最后由 dt1826 于 2014-11-14 21:13 編輯

find
[root@localhost ~]# find . -name 1*
find: paths must precede expression: 123
上述命令報(bào)錯(cuò),把*加""就可以了
[root@localhost ~]# find . -name 1"*"
./1
./123
問題是"*"這樣*不就失去作為通配符的意義了嗎?如何還能匹配123這樣的文件名?
*何解?

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報(bào)告]
發(fā)表于 2014-11-14 21:48 |只看該作者
這種形式的時(shí)候,find . -name 1*, shell會(huì)對(duì)*進(jìn)行擴(kuò)展, 由于你的目錄下面有兩個(gè)1開頭的文件,
所以擴(kuò)展之后的命令實(shí)際是這樣子的: find . -name 1 123 ( 其實(shí)和你執(zhí)行echo 1*時(shí),shell擴(kuò)展是同理的)
由于這不是一個(gè)合法的命令,當(dāng)然會(huì)報(bào)錯(cuò)。
如果你把1和123兩個(gè)文件刪除其一, 命令就不會(huì)報(bào)錯(cuò)了,但這只能搜到名字完全一樣的,而不是以1開關(guān)的任意文件。
當(dāng)對(duì)對(duì)“×”進(jìn)行引號(hào)的時(shí)候,你就阻止了shell對(duì)其擴(kuò)展,所以不會(huì)報(bào)錯(cuò)。

論壇徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16賽季CBA聯(lián)賽之北京
日期:2016-07-06 15:42:0715-16賽季CBA聯(lián)賽之同曦
日期:2016-06-12 10:38:0915-16賽季CBA聯(lián)賽之佛山
日期:2016-05-27 11:54:56黃金圣斗士
日期:2015-12-02 11:44:35白銀圣斗士
日期:2015-11-25 14:32:43白銀圣斗士
日期:2015-11-23 12:53:352015亞冠之布里斯班獅吼
日期:2015-10-21 16:55:482015亞冠之首爾
日期:2015-09-01 16:46:052015亞冠之德黑蘭石油
日期:2015-08-31 11:39:192015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-28 21:06:5315-16賽季CBA聯(lián)賽之廣東
日期:2016-07-12 14:58:53
3 [報(bào)告]
發(fā)表于 2014-11-14 22:34 |只看該作者
2樓解釋的很到位

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [報(bào)告]
發(fā)表于 2014-11-14 23:07 |只看該作者
回復(fù) 1# dt1826

enable the xtrace

$ set -x; find . -name 1*; set +x
+ find . -name 1 123
find: paths must precede expression: 123
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
+ set +x

$ set -x; find . -name "1*"; set +x
+ find . -name '1*'
./1
./123
+ set +x

   

論壇徽章:
9
2015亞冠之大阪鋼巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26處女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37雙魚座
日期:2014-07-25 10:09:54程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-24 06:20:00
5 [報(bào)告]
發(fā)表于 2014-11-14 23:08 |只看該作者
學(xué)習(xí)了,很贊的解釋

論壇徽章:
1
15-16賽季CBA聯(lián)賽之福建
日期:2016-01-19 11:22:51
6 [報(bào)告]
發(fā)表于 2014-11-15 11:03 |只看該作者
本帖最后由 dt1826 于 2014-11-15 11:08 編輯

shell未對(duì)*擴(kuò)展,這已經(jīng)確定,問題是find如何處理*?看作普通字符?通配符?還是正則元字符?
結(jié)合上面命令的結(jié)果和正則的規(guī)則看,普通字符,正則都不符合,而通配符只有shell能擴(kuò)展,這里如何理解?

論壇徽章:
145
技術(shù)圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術(shù)圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [報(bào)告]
發(fā)表于 2014-11-16 15:02 |只看該作者
本帖最后由 jason680 于 2014-11-16 15:05 編輯

回復(fù) 6# dt1826


>> ...問題是find如何處理*?看作普通字符?通配符?還是正則元字符?

$ ls
11  123  1.bak  1.txt


1. 通配符
$ find . -name "1.*"
./1.txt
./1.bak


2. 正則
$ find . -regex "./1.*"
./11
./1.txt
./1.bak
./123

Note: more detail information by 'man find' command
$ man find
NAME
       find - search for files in a directory hierarchy
       ...
       -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 ...
        
       -regex pattern
              File  name  matches regular expression pattern.  This is a match
              on the whole path, not a search.  For example, to match  a  file
              named `./fubar3', you can use the regular expression `.*bar.' or
              `.*b.*3', but not `f.*r3'.  The regular  expressions  understood
              by  find  are by default Emacs Regular Expressions, but this can
              be changed with the -regextype option. ...

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP