2つのフォルダを比較し、シェルスクリプトを使用して違いを3番目のフォルダにコピーする方法

2つのフォルダを比較し、シェルスクリプトを使用して違いを3番目のフォルダにコピーする方法
#!/bin/sh
# This is comment!
echo Hello World
for file1 in /C:/Users/shubham.tomar/Desktop/Shell/Test1/*; 
do
filename1=$(basename "$file1")
echo $filename1
echo "------------------------"
for file2 in /C:/Users/shubham.tomar/Desktop/Shell/Test2/*;
do
filename2=$(basename "$file2")
echo $filename2
if [["filename1" = "filename2"]]; then
echo "---File matched---"
else
mv -f /C:/Users/shubham.tomar/Desktop/Shell/Test2/$filename2 /C:/Users/shubham.tomar/Desktop/Shell/Moved/
fi
echo "--------------File Moved-----------"
done
done

**

質問に関する注意事項

**

例:Desktop / Test1とDownloads / Test2の特定のパスにいくつかのファイルがあります。 Test2にはあるがTest1にはないすべてのファイルを例:Documents / MovedFilesのパスに移動するシェルスクリプトを作成したいと思います。ファイルは次のようになります。どんなタイプでも

ベストアンサー1

sf() {
    # find all files in the directory $1 non-recursively and sort them
    find $1 -maxdepth 1 -type f printf '%f\n' | sort
}

その後実行

join -v 1 <(sf Tes2) <(sf Tes1) | xargs -d '\n' -I file mv Tes2/file MovedFiles/

パイプの左側のオペランドは、Tes2ディレクトリに存在しないすべてのファイルを探しますTes1

その後、パイプの右側のオペランドはこれらのファイルをディレクトリに移動しますMovedFiles

おすすめ記事