Awk
對文件名進行唯一排序
我已經搜尋了解決方案,但找不到我的問題的答案。
我在一個目錄中有數千個文件。文件名採用以下格式
74687_1543944930857.txt 74687_1543945090451.txt 74687_1543945278047.txt 74687_1543945465203.txt 75282_1543964541818.txt 75282_1543964595523.txt 75308_1543941117138.txt 75308_1543941398049.txt 75308_1543941677699.txt 75308_1543942393359.txt
在這些文件名中,前面的數字
_
(下劃線)決定了使用者的 ID。像 in 一樣75308_1543942393359.txt
,75308
是使用者 ID。因此,在上面的範例中,有 3 個使用者,即。74687, 75282 and 75308
.如何知道目錄中的使用者總數?
只需將您的輸出傳遞給
grep
然後sort
:ls -1 | grep -oP "^\d+" | sort | uniq -c
現在,您獲得了帶有 USER ID 及其計數的排序數據。
用於
printf
列出每個目錄中的文件並awk
唯一標識使用者 IDshopt -s nullglob printf '%s\n' *.txt | awk -F_ '!unique[$1]++ { print $1 }'
並單獨列印計數,執行
printf '%s\n' *.txt | awk -F_ '!unique[$1]++ { count++ } END { print count }'