我有 3 个文件夹,名为FOLDER1、FOLDER2、FOLDER3,我在这些文件夹中有几个文件,如 wise file1.txt、file2.txt、file3.txt .... 等(在这 3 个文件夹中没有子文件夹)。
在这些文件夹中,有些文件是重复的。
FOLDER1
有file1.txt
并且FOLDER2
也有file1.txt
或者
FOLDER2
有file1.txt
和FOLDER3
有file1.txt
或者
FOLDER1
有file1.txt
和FOLDER3
有file 1.txt
。
需要将file1.txt
另一个文件夹中的另一个重复项重命名为file1DUPLICATE.txt
。
假设,如果FOLDER1
和FOLDER2
有file1.txt
,我需要重命名file1.txt
的FOLDER1
作为file1DUPLICATE.txt
,并保留file1.txt
在FOLDER2
为原件。
如果重复发生在FOLDER1
,FOLDER2
我需要在FOLDER1
唯一的重命名。
如果重复出现在FOLDER2
and 中FODLER3
,我需要在FOLDER3
only 中重命名。
如果在FOLDER1
and 中出现重复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] 删除。
我来说两句