サイズがゼロのファイルを削除

概要

  • カレントディレクトリからサイズがゼロのファイルを削除する。
  • 「-d」オプションを付けると削除実行、無しだと削除対象のリストアップのみ行う。
  • ドットファイルも対象とする。

ソースコード

  • filedelSizeZero.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
    
     
     
     
     
     
     
     
     
     
     
    -
    -
    |
    -
    |
    !
    !
     
    -
    -
    -
    |
    |
    -
    |
    !
    !
    !
    |
    |
    
    #!/usr/bin/perl
    # カレントディレクトリからサイズゼロのファイルを削除する
     
    use strict;
    use warnings;
    use utf8;
     
    my $progName = 'delSizeZero';
    my $delete = 0;
     
    if ( @ARGV > 0 ){
      if ( $ARGV[0] eq '-d' ){
        $delete = 1;
      } else {
        die("List up files that are size 0.\nusage: $progName [-d]\n  -d: delete them\n");
      }
    }
     
    foreach my $file (sort(glob("{.*,*}"))){
      if ( -f $file && -s $file == 0 ){
        $file =~ m{([^;]+)$};
        my $fileName = $1;
        print "$fileName\n";
        if ( $delete ){
          unlink($file) or die("$progName: $fileName: $!\n");
        }
      }
    }
     
    # EOF
    

テキストファイルからXML部分を抜き出し

概要

  • テキストファイルからXML部分を抜き出す。
  • 1ファイルにXMLは1個。
  • 文字コードはEUC。
  • 処理はWindows上で行う。

ソースコード

すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 
 
 
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
!
!
 
 
#!/usr/local/bin/perl
 
# カレントディレクトリのテキストファイルのリスト
@filelists = <./*.txt>;
# print join( "\n", @filelists );
 
foreach $fname_in (@filelists){
    $fname_out = $fname_in;
    $fname_out =~ s/\.txt/\.xml/;
 
    open( IN, $fname_in );
    @lines = < IN >;
    close( IN );
    $body = join( "", @lines );
 
    # XML部分を正規表現で抜き出す
    # '.' は改行にマッチしないので、代わりに [\x00-\xff] を使う (マルチバイトストリングの場合)
    # unicode だと [\x0000-\xffff] を使う
    if ( $body =~ /^[\x00-\xff]*(\<\?xml [\x00-\xff]*\<\/[^\>]+\>)[\x00-\xff]*$/ ){
        $body = $1 . "\n";
        # CRLF から CR を削除
        # $body =~ tr/\r//d;
        open( OUT, ">" . $fname_out );
        # テキストモードだと自動的に CR が付加されるのでバイナリモードで書き出し
        binmode( OUT );
        print OUT $body;
        close( OUT );
    }
}
 
#EOF

添付ファイル: filedelSizeZero.zip 402件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Tue, 24 Jun 2014 04:16:14 JST (1304d)