1

/home/Docs/Calc に *.xls ファイルがあります。そのフォルダ内には複数のサブディレクトリがあります。例えば

/home/Docs/Calc/2011
/home/Docs/Calc/2012
/home/Docs/Calc/2013

find コマンドを使用して、サブディレクトリの下の各ファイルを gzip できます。

find /home/Docs/Calc -iname "*.xls" -exec gzip {} \;

しかし、各サブディレクトリ内のすべてのファイルを gzip するにはどうすればよいですか? 例えば。

/home/Docs/Calc/2011/2011.tar.gz
/home/Docs/Calc/2012/2012.tar.gz
/home/Docs/Calc/2013/2013.tar.gz

/home/Docs/Calc は、Calc-work、calc-tax、calc-bills などの多くのフォルダーの 1 つであることを付け加えておきます。これらにはすべて年サブフォルダーがあります

4

5 に答える 5

1

次のシェル スクリプトを使用できます。

#!/bin/bash

cd /home/Docs/Calc/
find=`find . -type d`
for f in $find; do
    cd $f   
    tar -cvz *.xls >> ${f##*/}.tar.gz
    cd -
done
于 2013-09-06T04:03:57.997 に答える