将多个文件夹中的重复文件名重命名为另一个名称

phpjsnerd

我有 3 个文件夹,名为FOLDER1FOLDER2FOLDER3,我在这些文件夹中有几个文件,如 wise file1.txtfile2.txtfile3.txt .... 等(在这 3 个文件夹中没有子文件夹)。

在这些文件夹中,有些文件是重复的。

FOLDER1file1.txt并且FOLDER2也有file1.txt

或者

FOLDER2file1.txtFOLDER3file1.txt

或者

FOLDER1file1.txtFOLDER3file 1.txt

需要将file1.txt另一个文件夹中的另一个重复项重命名file1DUPLICATE.txt

假设,如果FOLDER1FOLDER2file1.txt,我需要重命名file1.txtFOLDER1作为file1DUPLICATE.txt,并保留file1.txtFOLDER2为原件。

如果重复发生在FOLDER1FOLDER2我需要在FOLDER1唯一的重命名

如果重复出现在FOLDER2and 中FODLER3,我需要在FOLDER3only 中重命名

只是我不想重命名 FOLDER2 中的文件

如果在FOLDER1and 中出现重复FOLDER3,我可以重命名file.txt我想要任何文件夹。

任何人都有实现该脚本的想法吗?

爵士乐

您没有表现出太多努力让我们帮助您解决这个问题。但是由于我正在学习 bash 脚本,因此我将您的问题视为练习。

所以......这是一个重命名重复文件的bash脚本。

/!\ 重命名的文件将位于第一个参数的文件夹中。因此,就您而言,您必须像这样启动它:

  • 重命名来自 folder1 和 folder2 的重复文件:

    $ mv_duplicates_script.sh /path/to/FOLDER1 /path/to/FOLDER2

  • 重命名来自 folder1 和 folder3 的重复文件:

    $ mv_duplicates_script.sh /path/to/FOLDER1 /path/to/FOLDER3

  • 重命名来自 folder3 和 folder2 的重复文件:

    $ mv_duplicates_script.sh /path/to/FOLDER3 /path/to/FOLDER2

请注意,您必须在最后一个参数中设置 FOLDER2,以便重命名的文件转到 FOLDER3。

#!/bin/bash

# if missing args, print Usage
##############################
if [[ -z $1 ]] || [[ -z $2 ]]
  then
    echo "Usage : `basename $0` /absolute/path/to/folder1 /absolute/path/to/folder2"

    # exit with failed status
    exit 1
fi

# test if folders exist
#######################
if [[ ! -d $1 ]]
  then
    echo "ERROR : Folder $1 not found..."

    exit 1
fi

if [[ ! -d $2 ]]
  then
    echo "ERROR : Folder $2 not found..."

    exit 1
fi

# get filenames from folder 1
#############################

cd $1

i=0
for f in *.txt
  do
    folder1_files[$i]=$f
    ((i++))
done



# get filenames from folder 2
#############################

cd $2

i=0
for f in *.txt
  do
    folder2_files[$i]=$f
    ((i++))
done


# compare and move duplicates
#############################

for f in ${folder1_files[@]}
  do
    for g in ${folder2_files[@]}
      do
        if [[ $f == $g ]]
          then
            echo "Duplicate file : $g"
            echo "Renaiming to DUPLICATE_$g in $1"
            mv $1/$g $1/DUPLICATE_$g
        fi
    done
done

exit 0

将其用作:

$ mv_duplicates_script.sh /absolute/path/to/folder1 /absolute/path/to/folder2

希望能帮助到你。

PS:这当然可以改进,欢迎您提出意见/提示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文件夹中的文件重命名为一个名称

是否可以使用Powershell或批处理文件将文件夹中的每个文件重命名为另一个名称?

使用Java将文件名列表重命名为另一个列表的文件名

如何将多个文件重命名为一个名称

如何将一个文件重命名为另一个文件系统?

如何在Linux / Unix中将多个文件从一个扩展名重命名为另一个扩展名?

将子文件夹中的文件批量重命名为父文件夹名称

如何批量将文件重命名为文件夹名称+递增编号?我收到名称重复错误

根据另一个文件的存在来重命名文件夹中的文件

如何使用终端将具有序列名称的文件重命名为另一个序列?

如何将多个文件中的行复制到一个文件中,并将行命名为原始文件名

将网络文件夹中具有不同名称的FTP文件夹上的图片重命名为1个文件(替代)

重命名文件夹中的文件,然后将其移动到另一个文件夹

递归搜索,将jpg文件复制并重命名为父文件夹名称

搜索与另一个文件夹中的另一个文件名匹配的文件

将文件名从大写重命名为小写

将工作表批量重命名为特定文件夹中的工作簿(文件)名称

使用powershell将多个文件夹重命名为大写而不是文件

需要一个重命名脚本来剥离文件名并以增量方式添加文件夹名称

如何将特定文件重命名为许多文件夹的文件夹名称

PHPExcel将默认工作表名称重命名为另一个名称

将图像批量重命名为文件夹名称+序列号

如何将文件重命名为文件名中的子字符串?

如何在php中解析文件名并重命名为某个名称

根据另一个文件中的字符串重命名文件夹中的文件 - 使用 Python

Windows CMD-如何将所有子文件夹中的所有文件重命名为父文件夹名称

如何使用Powershell将文件从一个文件夹复制并重命名到另一个文件夹?

WebStorm 在终端中打开文件夹并自动将会话重命名为文件夹名称

通过bash将文件名从一个文件夹的文件复制到另一个文件夹的文件