2012-08-22 60 views
0

我試圖編寫一個簡單的腳本,它將從一個文件夾獲取文件名並在另一個文件夾中搜索它們,並在該文件夾中找到它們時將其刪除。 有兩個文件夾一樣從另一個文件夾中包含的一個文件夾中刪除文件

/home/install/lib 

/home/install/bin 

/home/install/include 

/usr/local/lib 

/usr/local/bin 

/usr/local/include 

我想從/ usr/local/lib目錄中刪除所有文件的{料,包括}包含在/ home /安裝/ lib目錄{料,包括}。例如有

/home/install/lib/test1 

/usr/local/lib/test1 

scritp會刪除/ usr/local/lib/test1。我試圖從每個單獨的目錄中執行此操作。

/home/install/lib:ls -f -exec rm/usr/local/lib/{} \; 但沒有。你能幫我用這個簡單的腳本來管理嗎?

回答

0

創建腳本rmcomm

#!/bin/bash 
a="/home/install/$1" 
b="/usr/local/$1" 
comm -12 <(ls "$a") <(ls "$b") | while read file; do 
    rm "$b/$file" 
done 

然後調用這個腳本每對:

for dir in lib bin include; do rmcomm "$dir"; done 
0

這裏有一些簡單的東西。刪除含有rm運行它行echo你已經確保它在做什麼之後,你想要什麼:

#!/bin/bash 

dirs[0]=lib 
dirs[1]=bin 
dirs[2]=include 

pushd /home/install 

for dir in "${dirs[@]}" 
do 
    for file in $(find $dir -type f) 
    do 
     # Remove 'echo' below once you're satisfied the correct files 
     # are being removed 
     echo rm /usr/local/$file 
    done 
done 

popd 
+0

感謝您的回覆。主要目標是在一行中完成,可以直接從控制檯運行。 –

+0

這是一個腳本。一旦你將它保存到一個文件和'chmod'd中'+ x',它將直接從控制檯運行。 –

相關問題