加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 在目录层次结构中查找并删除重复的文件名

发布时间:2020-12-15 18:31:40 所属栏目:安全 来源:网络整理
导读:#!/bin/shLASTBASE="" find $1 -type f -print | rev | sort | rev | while read FILEdo BASE=$(basename "$FILE") if [ "$BASE" = "$LASTBASE" ]; then rm "$FILE" LASTBASE="$BASE"done 如果将find的输出传输到while循环中,则可以逐行处理它们: find nnn/
#!/bin/sh
LASTBASE=""  
find $1 -type f -print | rev | sort | rev | while read FILE
do
    BASE=$(basename "$FILE")
    if [ "$BASE" = "$LASTBASE" ]; then
        rm "$FILE"
    LASTBASE="$BASE"
done
如果将find的输出传输到while循环中,则可以逐行处理它们:
find nnn/ -type f -print | rev | sort | rev | while read FILE; do
    ...
done

编辑:因此,如果文件名包含双(连续)空格,则此方法会中断,因为read实际上根据$IFS将行拆分,然后在存储最后一个变量时再次连接它.要解决此问题,您可以暂时更改$IFS以禁用拆分:

OIFS="$IFS"
IFS=""
find | while read...
IFS="$OIFS"

编辑:test(与[相同]没有==运算符,你只需要=.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读