2つのディレクトリ間で同じファイルを名前で見つけて削除します。

2つのディレクトリ間で同じファイルを名前で見つけて削除します。

dir2と同じファイル名を持つdir1のすべてのファイルを見つけて、dir1から削除したいと思います。

たとえば、

dir1: first.txt second.txt
dir2: third.txt first.txt

dir1 first.txtだからファイルから削除したいと思います。

Bash端末を使用してこれをどのように達成できますか? (forループなどのスクリプトや「fdupes」などのサードパーティプログラムではありません)

ベストアンサー1

スペースを含むファイル名を処理します。

#!/bin/bash
OPWD=$(pwd)
cd "$1"
for MYFILE in "$2"/*
do
    if [ -f "${MYFILE##/*/}" ]
    then
        echo "removing ${MYFILE##/*/}"
        rm "${MYFILE##/*/}"
    fi
done
cd "$OPWD"

おすすめ記事