我有很多.cap wirehark文件要根据它们的时间戳进行重新排序。
我已经在Linux终端上使用reordercap inputfilename.cap outputfilename.cap命令。在这里,我必须手动对文件进行一次重新排序。
我如何重新排序文件夹中的一组.cap文件,以便仅通过给文件夹名称指定该文件夹中的所有.cap文件即可重新排序,并且输出文件名也将自动分配(例如,相同的输入文件名称和数字2附加到名称的末尾-例如,如果输入文件名是aaa.cap,则输出文件名可能是aaa2.cap)?
谢谢
这应该可以解决问题:
TARGET_DIR="./wirecap"
ls -lrt $TARGET_DIR/*.cap > ./temp
DASH="-"
# state of the directory before any changes
echo before any changes
echo
ls -lrt $TARGET_DIR
echo
# for each file , find where number they are in timestamp
# and then rename each file in format previousname-order
for filename in $TARGET_DIR/*.cap; do
SHORTFILENAME="${filename##*/}"
ORDER=`grep -nw $SHORTFILENAME ./temp | cut -d: -f1`
mv $TARGET_DIR/$SHORTFILENAME $TARGET_DIR/$SHORTFILENAME$DASH$ORDER
done
#new state of the directory
echo after the changes
ls -l $TARGET_DIR
#cleanup
rm ./temp
示例运行:
mamuns-mac:~ xmrashid$ ./do.sh
before any changes
total 0
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 k.cap
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 j.cap
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 ky.cap
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 ty.cap
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 abc.cap
after the changes
total 0
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 abc.cap-5
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 j.cap-2
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 k.cap-1
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 ky.cap-3
-rw-r--r-- 1 foo 1951595366 0 Apr 8 16:26 ty.cap-4