linux檔案排序

2021-10-09 21:35:47 字數 3814 閱讀 4586

**:  侵刪

鏈結取自: 

最近想要做資料庫的增量備份和還原   自己定義了增量備份的資料夾是inc_1-----inc_100這樣的, 想要給資料夾排序, 得到最新的資料夾名字, 其中波折就不說了, 得到以下命令可以得到最新的乙個inc_*資料夾名字:

ls -d inc_*/ | sort -k1.5n | tail -n 1
說說 sort -k1.5n 

指的是從第乙個域的第五個字元開始到本域的最後乙個字元為止的數字進行排序, 也就是說inc_後面的數字按照自然順序排列

tail -n 1

得到最後的乙個資料夾, 這裡我的目的就達到了

以下從複製以免丟失

檔案過濾分割與合併

sort命令是在linux裡非常有用,它將檔案進行排序,並將排序結果標準輸出。sort命令既可以從特定的檔案,也可以從stdin中獲取輸入。

sort(選項)(引數)
-b:忽略每行前面開始出的空格字元;

-c:檢查檔案是否已經按照順序排序;

-d:排序時,處理英文本母、數字及空格字元外,忽略其他的字元;

-f:排序時,將小寫字母視為大寫字母;

-i:排序時,除了040至176之間的ascii字元外,忽略其他的字元;

-m:將幾個排序號的檔案進行合併;

-m:將前面3個字母依照月份的縮寫進行排序;

-n:依照數值的大小排序;

-o《輸出檔案》:將排序後的結果存入制定的檔案;

-r:以相反的順序來排序;

-t《分隔字元》:指定排序時所用的字段分隔字元;

+《起始字段》-《結束字段》:以指定的字段來排序,範圍由起始欄位到結束欄位的前一欄位。

檔案:指定待排序的檔案列表。

sort將檔案/文字的每一行作為乙個單位,相互比較,比較原則是從首字元向後,依次按ascii碼值進行比較,最後將他們按公升序輸出。

[root@mail text]# cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

eee:50:5.5

[root@mail text]# sort sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

eee:50:5.5

忽略相同行使用-u選項或者uniq:

[root@mail text]# cat sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

eee:50:5.5

[root@mail text]# sort -u sort.txt

aaa:10:1.1

bbb:20:2.2

ccc:30:3.3

ddd:40:4.4

eee:50:5.5

或者[root@mail text]# uniq sort.txt

aaa:10:1.1

ccc:30:3.3

ddd:40:4.4

bbb:20:2.2

eee:50:5.5

sort的-n、-r、-k、-t選項的使用:

[root@mail text]# cat sort.txt

aaa:bb:cc

aaa:30:1.6

ccc:50:3.3

ddd:20:4.2

bbb:10:2.5

eee:40:5.4

eee:60:5.1

#將bb列按照數字從小到大順序排列:

[root@mail text]# sort -nk 2 -t: sort.txt

aaa:bb:cc

bbb:10:2.5

ddd:20:4.2

aaa:30:1.6

eee:40:5.4

ccc:50:3.3

eee:60:5.1

#將cc列數字從大到小順序排列:

[root@mail text]# sort -nrk 3 -t: sort.txt

eee:40:5.4

eee:60:5.1

ddd:20:4.2

ccc:50:3.3

bbb:10:2.5

aaa:30:1.6

aaa:bb:cc

# -n是按照數字大小排序,-r是以相反順序,-k是指定需要愛排序的字段,-t指定字段分隔符為冒號

-k選項的具體語法格式:

-k選項的語法格式:

fstart.cstart modifie,fend.cend modifier

-------start--------,-------end--------

fstart.cstart 選項 , fend.cend 選項

這個語法格式可以被其中的逗號,分為兩大部分,start部分和end部分。start部分也由三部分組成,其中的modifier部分就是我們之前說過的類似n和r的選項部分。我們重點說說start部分的fstartc.startc.start也是可以省略的,省略的話就表示從本域的開頭部分開始。fstart.cstart,其中fstart就是表示使用的域,而cstart則表示在fstart域中從第幾個字元開始算「排序首字元」。同理,在end部分中,你可以設定fend.cend,如果你省略.cend,則表示結尾到「域尾」,即本域的最後乙個字元。或者,如果你將cend設定為0(零),也是表示結尾到「域尾」。

從公司英文名稱的第二個字母開始進行排序:

guge 50 3000使用了-k 1.2,表示對第乙個域的第二個字元開始到本域的最後乙個字元為止的字串進行排序。你會發現baidu因為第二個字母是a而名列榜首。sohu和 google第二個字元都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。guge只能屈居第四了。

只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序:

guge 50 3000由於只對第二個字母進行排序,所以我們使用了-k 1.2,1.2的表示方式,表示我們「只」對第二個字母進行排序。(如果你問「我使用-k 1.2怎麼不行?」,當然不行,因為你省略了end部分,這就意味著你將對從第二個字母起到本域最後乙個字元為止的字串進行排序)。對於員工工資進行排 序,我們也使用了-k 3,3,這是最準確的表述,表示我們「只」對本域進行排序,因為如果你省略了後面的3,就變成了我們「對第3個域開始到最後乙個域位置的內容進行排序」 了。

Linux檔案分割,sql排序

split命令可以將乙個大檔案分割成很多個小檔案,有時需要將檔案分割成更小的片段,比如為提高可讀性,生成日誌等。b 值為每一輸出檔案的大小,單位為 byte。c 每一輸出檔案中,單行的最大 byte 數。d 使用數字作為字尾。l 值為每一輸出檔案的列數大小。例 將大檔案分割為10k大小的檔案,名字字...

Linux 檔案按大小排序

linux某個目錄下的檔案按大小排序 1.df lh 2.du s usr sort rn 這是按位元組排序 3.du sh usr sort rn 這是按兆 m 來排序 4.選出排在前面的10個 du s usr sort rn head 5.選出排在後面的10個 du s usr sort rn...

Linux日誌檔案內容過濾和日誌檔案排序

鏡頭拉回今天,今天下午值班的工作是日誌分析,以前基本沒做過類似的工作,所謂分析,無外乎從中提取點有用的東西出來。前天發現伺服器上某 被黑,檔案被篡改,經查,ftp帳號被黑客破解。處理工作很簡單,修改ftp密碼,恢復 備份即可。但是老師要我們查查ftp的日誌檔案,想知道還有沒有別的帳號被破解,於是,真...