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

前端之家收集整理的这篇文章主要介绍了bash – 在目录层次结构中查找并删除重复的文件名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. #!/bin/sh
  2. LASTBASE=""
  3. find $1 -type f -print | rev | sort | rev | while read FILE
  4. do
  5. BASE=$(basename "$FILE")
  6. if [ "$BASE" = "$LASTBASE" ]; then
  7. rm "$FILE"
  8. LASTBASE="$BASE"
  9. done
如果将find的输出传输到while循环中,则可以逐行处理它们:
  1. find nnn/ -type f -print | rev | sort | rev | while read FILE; do
  2. ...
  3. done

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

  1. OIFS="$IFS"
  2. IFS=""
  3. find | while read...
  4. IFS="$OIFS"

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

猜你在找的Bash相关文章