Bash
查找並刪除 2 個目錄之間的所有相同文件(按名稱)
我想在 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"