0

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

/home/install/lib

/home/install/bin

/home/install/include

/usr/local/lib

/usr/local/bin

/usr/local/include

我想从 /usr/local/lib{bin,include} 中删除 /home/install/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/{} \; 但什么都没有。你能帮我管理这个简单的脚本吗?

4

2 回答 2

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
于 2012-08-22T15:23:44.467 回答
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
于 2012-08-22T15:32:14.380 回答