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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zinss26914/article/details/8592353

前言

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

思路

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

SHELL脚本


  
  
  1. #!/bin/bash
  2. #获取查找的目录名
  3. if [ 'x' == 'x'$1 ]; then
  4. echo "Usage $0 search_dir"
  5. exit
  6. fi
  7. #变量定义
  8. dir_arr=$(find $1 -type d -print;)
  9. store_path="/tmp/1.txt"
  10. if [ -f $store_path ]; then
  11. rm -r $store_path
  12. fi
  13. #获取所有的文件
  14. for dir in ${dir_arr[*]}
  15. do
  16. find $dir -type f >>$store_path
  17. done
  18. #输出重复的文件名
  19. for file in $(awk -F '/' '{print $NF}' $store_path | sort | uniq -d)
  20. do
  21. echo $file
  22. done



后记

我这也只是抛砖引玉,大家有好的思路或者代码都可以跟贴共享一下!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值