shell指令碼實現查詢目錄下同名但不同字尾名的檔案

2021-08-26 19:05:33 字數 2454 閱讀 3452

原始出處 、作者資訊和本宣告。否則將追究法律責任。

因為後台錄入的同事,上傳檔案的時候,給檔案取了相同的名字,但不同的字尾名,由於檔案路徑非常深,大概十層左右,每一層又有幾十個檔案,所以人工找起來非常麻煩,所以寫了個指令碼,幫他們實現查詢指定目錄下所有子目錄及檔案,找出相同檔名,不同字尾的檔案,然後,手動保留其中乙個。

#!/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...