shell指令碼查詢指定目錄下所有子目錄中的同名檔案

2021-09-29 07:18:58 字數 794 閱讀 3361

今天qq群裡有位挺厲害的大神提出了乙個問題:「上海-redis-蛋疼(137795882) 17:39:37  有沒有查詢乙個目錄下面 有沒有重名檔案的 工具 啊」

大家都知道,同乙個目錄下是不存在同名檔案的,因此肯定要遍歷子目錄查詢同名檔案

find命令查詢所有的子目錄

find命令迴圈遍歷子目錄,獲取所有的檔案

對所有的檔案做去重

因為是shell指令碼,所以用好sort、uniq、awk等是非常方便的

#!/bin/bash

#獲取查詢的目錄名

if [ 'x' == 'x'$1 ]; then

echo "usage $0 search_dir"

exit

fi#變數定義

dir_arr=$(find $1 -type d -print;)

store_path="/tmp/1.txt"

if [ -f $store_path ]; then

rm -r $store_path

fi#獲取所有的檔案

for dir in $

dofind $dir -type f >>$store_path

done

#輸出重複的檔名

for file in $(awk -f '/' '' $store_path | sort | uniq -d)

doecho $file

done

我這也只是拋磚引玉,大家有好的思路或者**都可以跟貼共享一下!

執行shell指令碼進入指定目錄

在linux環境下,常有通過shell指令碼進入指定目錄的操作,例如有一段指令碼chdir.sh plain view plain copy bin sh cd home user downloads pwd 在shell環境下通過.chdir.sh執行這段指令碼是無法進入downloads目錄的 ...

執行shell指令碼進入指定目錄

在linux環境下,常有通過shell指令碼進入指定目錄的操作,例如有一段指令碼chdir.sh plain view plain copy bin sh cd home user downloads pwd 在shell環境下通過.chdir.sh執行這段指令碼是無法進入downloads目錄的 ...

執行shell指令碼進入指定目錄

在linux環境下,常有通過shell指令碼進入指定目錄的操作,例如有一段指令碼 text.sh bin sh cd learn pwdls l在shell環境下通過.text.sh執行這段指令碼是無法進入learn目錄的 這是因為shell在執行指令碼時,會建立乙個子shell,並在子shell中...