0

tarball Index.tar.gz があります。その中には、このようなディレクトリがあります

Index1
/db_newtime_oldtime_0 Index1
/db_newtime_oldtime_1 Index1/db_newtime_oldtime_2
Index2/db_newtime_oldtime_0
Index2/db_newtime_oldtime_1
Index2/db_newtime_oldtime_2

tarファイルを解凍する際、dbディレクトリ名の末尾に数値で99を追加したいです。したがって、抽出後のディレクトリ構造は次のようになります

Index1
/db_newtime_oldtime_99 Index1
/db_newtime_oldtime_100 Index1/db_newtime_oldtime_101
Index2/db_newtime_oldtime_99
Index2/db_newtime_oldtime_100
Index2/db_newtime_oldtime_101

シェルスクリプトを使用して、このように名前を変更することは可能ですか?

4

3 に答える 3

0

これをテストするつもりです。tar-gzip 中に何も見逃していなければ....

tar -C ./tmp -xvf ./Index.tar.gz
find ./tmp -name "[a-zA-Z_][0-9]" | sed s/([a-zA-Z])([0-9])/\1 \2 | awk '{print "mv "$1$2" "$1$2+99}'
cd ./tmp && tar -zxf ../Index.tar.gz . && cd ../ && rm -rf ./tmp

注: はい、AWK は数学をサポートしています :)

于 2013-09-03T17:33:54.453 に答える
0

tar ボールを抽出した後、内部の各ディレクトリ名の名前を変更するだけindex*/です... for ループを使用してそれを行うことができます:

for i in $(\ls -d index*/*); 
do 
    dst=$(echo "$i" | sed -e 's/oldtime_/oldtime_ /g' | awk '{print $1$2+99}'); 
    mv "$i" "$dst"; 
done
于 2013-09-03T17:24:55.163 に答える