Skip to content

Instantly share code, notes, and snippets.

@mamemomonga
Last active December 27, 2022 06:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mamemomonga/680672ea1b509182a37d62b82b708b90 to your computer and use it in GitHub Desktop.
Save mamemomonga/680672ea1b509182a37d62b82b708b90 to your computer and use it in GitHub Desktop.
すべてのファイルを ../files にコピーするシェルスクリプトを生成する。ただし、フォルダがない場合は新たに作成し、拡張子がhtm,html,js,css,txtの場合はgzip圧縮し、拡張子.gzを追加する。
#!/usr/bin/perl
# すべてのファイルを ../files にコピーするシェルスクリプトを生成する。
# ただし、フォルダがない場合は新たに作成し、
# 拡張子がhtm,html,js,css,txtの場合はgzip圧縮し、拡張子.gzを追加する。
use strict;
use warnings;
use File::Find;
use feature 'say';
use File::Path;
use File::Basename;
my @files;
find( sub {
my $src=$File::Find::name;
return if($src eq '.');
return if($src=~m!^/Makefile$!);
my $dst=$src;
$dst=~s!^./!../files/!;
push @files,{ src => $src, dst => $dst};
},'.');
my %dirs;
foreach (@files) {
if($_->{src}=~m!\.(?:html?)|(?:js)|(?:css)|(?:txt)$!) {
$_->{dst}.=".gz";
$_->{cmd}=qq{gzip -c -9 "$_->{src}" > "$_->{dst}"};
} else {
$_->{cmd}=qq{cp "$_->{src}" "$_->{dst}"};
}
$dirs{File::Basename::dirname($_->{dst})}=1;
}
foreach(keys %dirs) {
say qq{mkdir -p "$_"};
}
foreach(@files) {
say $_->{cmd};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment