前端之家收集整理的这篇文章主要介绍了
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(与[相同]没有==运算符,你只需要=.
原文链接:https://www.f2er.com/bash/385486.html