0

あるフォルダーからファイル名を取得し、別のフォルダーでそれらを検索し、そのフォルダーで見つかった場合は削除する簡単なスクリプトを作成しようとしています。のような2つのフォルダを手に入れました

/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/{} \; しかし、何もありません。この簡単なスクリプトで管理するのを手伝ってくれませんか?

4

2 に答える 2

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 に答える
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 に答える