从另一个文件夹中包含的一个文件夹中删除文件

时间:2012-08-22 15:14:18

标签: bash shell console

我正在尝试编写一个简单的脚本,它将从一个文件夹中获取文件名,并在另一个文件夹中搜索它们,如果在该文件夹中找到它们则删除。 有两个文件夹,如

/home/install/lib

/home/install/bin

/home/install/include

/usr/local/lib

/usr/local/bin

/usr/local/include

我想删除/ home / install / lib {bin,include}中包含的/ usr / local / lib {bin,include}中的所有文件。例如

/home/install/lib/test1

/usr/local/lib/test1

scritp将删除/ usr / local / lib / test1。我试图从每个单独的目录

中做到这一点

/ home / install / lib:ls -f -exec rm / usr / local / lib / {} \; 但没什么。你能帮我管理这个简单的脚本吗?

2 个答案:

答案 0 :(得分:0)

这是一件简单的事情。从包含echo的行中移除rm,以便在确保其执行所需操作后运行它:

#!/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

答案 1 :(得分: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