Bash

如何在命令行中從目錄 B 中的目錄 A 中刪除匹配的文件?

  • March 31, 2020

A我在目錄中有一些重複的文件B,我怎樣才能刪除使用bash中B的文件名的欺騙?A

如何在其他外殼中做到這一點是一個受歡迎的獎勵。

單程:

#!/bin/bash
cd ~/B
for file in ~/A/*
do
   file1=$(basename "$file")
   [ -f "$file1" ] && { echo "deleting $file1 "; rm -- "$file1"; }
done

在一行中

grep -f <(ls "A") <(ls "B") | xargs -I'{}' rm "B/{}"

但它的工作僅取決於文件​​名,可能會影響空子目錄。為了避免這種使用find -type f -maxdepth 1,而不是ls.

如需更安全的檢查,請使用@KasyA recepie。

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