从bash中的一个文件夹中删除相同的文件(ubuntu 20.4)

从bash中的一个文件夹中删除相同的文件(ubuntu 20.4)

我需要编写一个 Bash 脚本程序。该程序获取源文件夹 d1 和目标文件夹 d2,如下所示:d1@d2。然后 - 她浏览 2 个文件夹中的文件,如果有相同的文件,则从文件夹 d1 中删除它们。需要注意的是,我是该领域的新手,高级方法有限。这是我刚刚编写的代码,我不知道如何继续。

    echo -n "Enter parameters in the format "
    read directory

x=$(echo $directory | cut -d"@" -f1)
y=$(echo $directory | cut -d"@" -f2)


while [ $f1 -ne $f2 ]
do
    if [ $x -ne $y ]
    then
    $x == $y
    
    continue

fi
done

答案1

IFS首先,您可以通过设置所选的分隔符来简化格式的解析,这将在而不是空格处read拆分单词。使用@通配符 "$b"/*for 循环将迭代源目录中的文件/目录对象。${d##*/}从文件对象中删除源路径,然后我们可以创建一个新的目标对象$c/$e

#!/bin/bash

IFS=@ \
read -r -p "Enter parameters in the format source@target: " b c

for d in "$b"/*; do
    e="${d##*/}"
    if [[ -f "$c/$e" ]]; then
        echo rm -- "$c/$e"
    fi
done

相关内容