尋找目錄下同名但不同尾碼名檔案的shell指令碼代碼_linux shell

來源:互聯網
上載者:User

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

複製代碼 代碼如下:

#!/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 '/' '{print $NF}' /tmp/file.txt | awk -F '[.]' '{print $1}'| sort | uniq -d > /tmp/filename.txt 
     #把檔案名稱字取出來,有同樣名字的就把名字放到/tmp/filename.txt裡 
     line=`wc -l /tmp/filename.txt | awk '{print $1}'` 
     #判斷一下該檔案裡一共有多少行,每一行就是一個重名的檔案名稱 
     #輸出 
     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

類比測試:

linux-8hij:/tmp/test # ll
total 4
-rw-r--r-- 1 root root    0 Mar  9 02:04 1.png
-rw-r--r-- 1 root root    0 Mar  9 02:04 1.txt
drwxr-xr-x 2 root root 4096 Mar  9 02:05 test1
linux-8hij:/tmp/test/test1 # ll
total 0
-rw-r--r-- 1 root root 0 Mar  9 02:05 11.jpg
-rw-r--r-- 1 root root 0 Mar  9 02:05 11.log
-rw-r--r-- 1 root root 0 Mar  9 02:05 2.log

運行結果:

linux-8hij:/tmp # ./find_name.sh /tmp
The directory /tmp including same name file:
The directory /tmp/.ICE-unix including same name file:
The directory /tmp/.X11-unix including same name file:
The directory /tmp/gconfd-root including same name file:
The directory /tmp/gconfd-root/lock including same name file:
The directory /tmp/gpg-PIEU09 including same name file:
The directory /tmp/test including same name file:
/tmp/test/1.txt
/tmp/test/1.png
The directory /tmp/test/test1 including same name file:
/tmp/test/test1/11.jpg
/tmp/test/test1/11.log

查看記錄:

linux-8hij:/tmp # cat /tmp/samefile.txt
/tmp/test/1.txt /tmp/test/1.png
/tmp/test/test1/11.jpg /tmp/test/test1/11.log

通過這個指令碼可以實現指定目錄下同名但不同尾碼名的尋找,可以拓展為刪除指定的檔案的指令碼,覺得很實用,分享一下

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.