shell脚本查找指定目录下所有子目录中的同名文件

来源:互联网 发布:培训班java教哪些课程 编辑:程序博客网 时间:2024/05/16 06:37

前言

今天qq群里有位挺厉害的大神提出了一个问题:“上海-redis-蛋疼(137795882) 17:39:37  有没有查找一个目录下面 有没有重名文件的 工具 啊”
大家都知道,同一个目录下是不存在同名文件的,因此肯定要遍历子目录查找同名文件

思路

  1. find命令查找所有的子目录
  2. find命令循环遍历子目录,获取所有的文件
  3. 对所有的文件做去重
  4. 因为是shell脚本,所以用好sort、uniq、awk等是非常方便的

SHELL脚本

#!/bin/bash#获取查找的目录名if [ 'x' == 'x'$1 ]; thenecho "Usage $0 search_dir"exitfi#变量定义dir_arr=$(find $1 -type d -print;)store_path="/tmp/1.txt"if [ -f $store_path ]; thenrm -r $store_pathfi#获取所有的文件for dir in ${dir_arr[*]}dofind $dir -type f >>$store_pathdone#输出重复的文件名for file in $(awk -F '/' '{print $NF}' $store_path  | sort | uniq -d)doecho $filedone



后记

我这也只是抛砖引玉,大家有好的思路或者代码都可以跟贴共享一下!
原创粉丝点击