原始出處 、作者資訊和本宣告。否則將追究法律責任。
因為後台錄入的同事,上傳檔案的時候,給檔案取了相同的名字,但不同的字尾名,由於檔案路徑非常深,大概十層左右,每一層又有幾十個檔案,所以人工找起來非常麻煩,所以寫了個指令碼,幫他們實現查詢指定目錄下所有子目錄及檔案,找出相同檔名,不同字尾的檔案,然後,手動保留其中乙個。
#!/bin/bash
#判斷一下指令碼引數的問題
if [ $# -ne 1 ];then
echo "usage find_same.sh direcroty"
exit
fi find $1 -type d > /tmp/dir.txt
#將所有需要查詢的目錄本身和子目錄的名字儲存在乙個臨時檔案裡
#對每個目錄進行比較查詢
while read
dir
do find $dir -maxdepth 1 -type f > /tmp/file.txt
#將當前目錄下的所有檔案儲存在臨時檔案裡
awk -f '/'
''/tmp/file.txt | awk -f
'[.]'
''| sort | uniq -d > /tmp/filename.txt
#把檔案名字取出來,有同樣名字的就把名字放到/tmp/filename.txt裡
line=`wc -l /tmp/filename.txt | awk ''`
#判斷一下該檔案裡一共有多少行,每一行就是乙個重名的檔名
#輸出
echo "the directory $dir including same name file: "
if [ $line -ge 1 ] ; then
while read
name
do filename=`grep $name
/tmp/file.txt`
echo "$filename"
echo $filename >> /tmp/samefile.txt
#所有的記錄存放在這個檔案裡
done < /tmp/filename.txt
fi done < /tmp/dir.txt
模擬測試:
執行結果:
檢視記錄:
通過這個指令碼可以實現指定目錄下同名但不同字尾名的查詢,可以拓展為刪除指定的檔案的指令碼,覺得很實用,分享一下
本文出自 「我就是我非此非彼」 部落格,請務必保留此出處
shell指令碼查詢指定目錄下所有子目錄中的同名檔案
今天qq群裡有位挺厲害的大神提出了乙個問題 上海 redis 蛋疼 137795882 17 39 37 有沒有查詢乙個目錄下面 有沒有重名檔案的 工具 啊 大家都知道,同乙個目錄下是不存在同名檔案的,因此肯定要遍歷子目錄查詢同名檔案 find命令查詢所有的子目錄 find命令迴圈遍歷子目錄,獲取所...
shell指令碼實現檢視tomcat日誌
logs catalina.out,每次查個log,都得進很深的目錄,很麻煩,浪費時間。而且來來回回就幾個命令。檢視專案實時輸出的日誌 指令碼名稱 cat catalina log.sh 指令碼執行方式 sh cat catalina log.sh tomcat 8108 bin bash tail...
shell中使用SQL實現查詢
先把文字進行格式處理,然後以空格為分隔符,取第二個空格後的字串,排序,去重,再降序排列,取前5個 arr cat 0100055f detail.txt sed e d awk f sort uniq c sort nr head 5 awk len 獲取陣列長度 for i 0 i len i d...