Bash
如何在命令行中從目錄 B 中的目錄 A 中刪除匹配的文件?
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。