我正在尝试编写一个简单的脚本,它将从一个文件夹中获取文件名,并在另一个文件夹中搜索它们,如果在该文件夹中找到它们则删除。 有两个文件夹,如
/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 / {} \; 但没什么。你能帮我管理这个简单的脚本吗?
答案 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