0

私はこのタスクに苦労しています:

ディレクトリ (パス) 名とファイル名ベース ("."、"*.txt" など) を入力として受け取るスクリプトを作成します。スクリプトは、指定されたディレクトリ ツリーを検索し、指定されたファイル名に一致するすべてのファイルを見つけて、それらを 1 つのファイルにバンドルします。指定されたファイルをスクリプトとして実行すると、元のファイルが返されます。

誰でも私を助けることができますか?

最初に、次のような検索部分を実行しようとしました:

#!/bin/bash

filebase=$2
path=$1

find $path \( -name $base \)

次に、バンドル用のこのコードを見つけましたが、それらを組み合わせる方法がわかりません。

for i in $@; do
 echo "echo unpacking file $i"
 echo "cat > $i <<EOF"
 cat $i
 echo "EOF"
 done
4

1 に答える 1

1

tripleeeのコメントに進むとshar、自己解凍型アーカイブを生成するために使用できます。アーカイブを生成するために、の出力を取得してにfind渡すことができます。shar

#!/bin/bash

path="$1"
filebase="$2"
archive="$3"

find "$path" -type f -name "$filebase" | xargs shar > "$archive"

-type fに渡されたオプションはfind、検索をファイルに制限します(つまり、ディレクトリを除外します)。これは必須の制限のようです。

上記のスクリプトがと呼ばれarchive_script.sh、実行可能である場合、たとえば次のように呼び出すことができます。

./archive_script.sh /etc '*.txt' etc-text.shar

これによりshar、/etc内のすべての.txtファイルのアーカイブが作成されます。

于 2012-10-31T14:47:39.623 に答える