2012-02-28 97 views
1

我有兩個文件夾,在這些文件夾中我有一些公用文件。現在我想從第一個文件夾中刪除公共文件。 像我有兩個文件夾名稱folder1和folder2。 現在在folder1我有一個,B,C文件,並在文件夾2我有C,B W,D文件。我想從folder1中刪除常用文件意味着b和c文件。從兩個文件夾中刪除公共文件

i由命令行

diff -ur folder1 folder2 

找到的共同文件,但我不能從在Ubuntu命令行所述第一文件夾中刪除公共文件。

回答

4

有一個簡單的解決方案:

for f in `ls -1 folder1`; do rm folder2/$f; done; 
+1

不適用於包含空格的文件名稱。在'ls -1 folder1'嘗試了'f;做rm「folder2/$ f」;完成;'但也沒有工作。 – 2014-03-17 16:30:38

1
find FIRSTDIR SECONDDIR -type f -maxdepth 1 -exec basename {} \; | \ 
    sort | \ 
    uniq -d | \ 
    sed 's_.*_rm FIRSTDIR/\0_' | \ 
    sh 
  1. 所以它首先檢查FIRSTDIRSECONDDIR的任何文件(S)(只有在精確的目錄,不遞歸),然後將其刪除的路徑的一部分。
  2. 排序先前的輸出
  3. 刪除其中僅出現一次的物品(唯一的非uniq的元件的剩餘)
  4. 生成從它
  5. 一個rm線被執行,而且我做推薦離開首先檢查最後一行,檢查將要完成的工作。
+0

喜索爾特Botykai它不工作。 – Rain 2012-02-29 16:04:04

+0

find:warning:在非選項參數-type後指定了-maxdepth選項,但選項不是位置的(-maxdepth會影響在它之前指定的測試以及在它之後指定的測試)。請在其他參數前指定選項。 – Rain 2012-02-29 16:11:21

+0

這只是一個警告。因此,如果您想要,請切換'-type f'和'-maxdepth 1'參數。 – 2012-02-29 19:06:40