簡體   English   中英

對find命令給出的結果進行排序

[英]sort results given by find command

這是find命令:

find . -name 'VPN_CALLRECORD_20140409*' -type f| xargs ls -lhrt |awk '{print $9}' > log.txt

這是我要查找的文件集,這些文件可以是定向到“ xargs”的7,000個文件,我只列出第一部分,中間部分和最后一部分

-rw-rw-r-- 1 see  seegrp  100K Feb 12 00:00 VPN_CALLRECORD_20140409000000_000760000.txt
-rw-rw-r-- 1 see  seegrp  193K Feb 12 00:01 VPN_CALLRECORD_20140409000000_000760001.txt
.
.
-rw-rw-r-- 1 see  seegrp  193K Feb 12 10:03 VPN_CALLRECORD_20140409174500_000764500.txt
.
.
-rw-rw-r-- 1 see  seegrp   95K Feb 12 23:59 VPN_CALLRECORD_20140409235500_000766488.txt
-rw-rw-r-- 1 see  seegrp  103K Feb 12 23:59 VPN_CALLRECORD_20140409235500_000766489.txt

稍后,這是壓縮的tar:

tar -czf cdr_backup.tar.gz -T log.txt

使用這種方式執行日志時出現問題,因為log.txt文件上的結果未正確排序,我認為這是由於某些xargs限制

碼:

number=$(more log.txt |wc -l)
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++">>log_after_cdr_backup.txt
echo "Start Time : $DATETIME">>log_after_cdr_backup.txt
echo "Tar file created: $FILE">>log_after_cdr_backup.txt
echo "Tar file contains $number CDRs backed up successfully">>log_after_cdr_backup.txt
firstline=$(head -n 1 log.txt)
echo "from this sequence $firstline ">>log_after_cdr_backup.txt
lastline=$(tail -1 log.txt)
echo "to this one $lastline">>log_after_cdr_backup.txt
echo "Finish Time : $FINISHTIME">>log_after_cdr_backup.txt
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++">>log_after_cdr_backup.txt

產生的輸出:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Start Time : 20140410 15:16:24
Tar file created: cdr_backup.tar.gz
Tar file contains 7720 CDRs backed up successfully
from this sequence ./VPN_CALLRECORD_20140409000000_000741343.txt
to this one ./VPN_CALLRECORD_20140409174500_000764500.txt
Finish Time : 20140410 15:23:42
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

請注意,最后一個序列不是應為

VPN_CALLRECORD_20140409235500_000766489.txt

為什么? 我不確定,我嘗試對log.txt文件中的結果進行排序,所以這

lastline=$(tail -1 ${TEMPFILE})

可以工作,但是不可能,你知道為什么嗎?

Xargs將分割傳入參數的數量,以避免創建太長的命令行。 同樣,“ find”的輸出將不會以任何方式排序。 如果要排序,請在管道中插入一個“排序”調用(例如,在末尾)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM