Bash

查找並刪除 2 個目錄之間的所有相同文件(按名稱)

  • November 3, 2015

我想在 dir1 中找到所有在 dir2 中具有相同文件名的文件,並將它們從 dir1 中刪除。

例如:

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

所以我想從dir1 first.txt文件中刪除。

如何使用 Bash 終端實現這一點?(不是帶有for循環等的腳本或像“fdupes”這樣的第 3 方程序)

處理帶空格的文件名:

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

另一個快速,也沒有明確的循環。別忘了,你可以在前面rm -f加上前綴echo來測試一下。

( cd dir2 && find . -maxdepth 1 -type f -print0 ) | ( cd dir1 && xargs -0 rm -f )

您可以將其放入腳本中,dir1"$1"dir2替換"$2"

引用自:https://unix.stackexchange.com/questions/240466