前端之家收集整理的这篇文章主要介绍了
bash – 在目录层次结构中查找并删除重复的文件名,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- #!/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(与[相同]没有==运算符,你只需要=.