1

1つのフォルダー内にいくつかのファイルがあります

UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP03_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv

すべてのファイルが存在することを確認したいだけです。いずれかのファイルが欠落している場合は、同じ名前の空のファイルを 1 つ作成する必要があります。

例えば:

UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv

UEDP03_20120821.csvファイルがない場合は、同じファイルを作成する必要があります。

4

6 に答える 6

5

がファイルfile.txtのリストである場合、bashで:

while read fname; do
    [[ -f $fname ]] || touch "$fname"
done < file.txt
于 2012-08-23T12:29:49.113 に答える
4

なぜこのためのスクリプトが必要なのですか?

dennisが提案したように、既存のファイルのアクセス時間を変更するために-aを使用できます。

  touch -a UEDP0{1..5}_20120821.csv

不足しているファイルを直接作成します。

于 2012-08-23T11:08:51.630 に答える
2

シェルスクリプト:-

for i in {1..5}
do
file="UEDP0${i}_20120821.csv"
if [ -f $file ]
then
    echo the file exists
else
 >$file
fi
done
于 2012-08-23T10:48:16.207 に答える
1

ファイルのリストが動的に変化する場合は、別のファイルにファイルのリストを含めることができます。これにより、簡単になります。

次にという名前のファイルにファイルがあるlist場合:

list内容は次のとおりです。

  UEDP01_20120821.csv
  UEDP02_20120821.csv
  UEDP03_20120821.csv
  UEDP04_20120821.csv
  UEDP05_20120821.csv

awk 'system("touch "$1"");' list

ファイルが存在しない場合は作成します。

于 2012-08-23T10:53:24.407 に答える
0

これはどう?名前の通常のファイルが存在するかどうかを確認します。そうでない場合は、作成します。

#!/usr/bin/perl
use strict;
use warnings;

my @files = qw(
    UEDP01_20120821.csv
    UEDP02_20120821.csv
    UEDP03_20120821.csv
    UEDP04_20120821.csv
    UEDP05_20120821.csv
);

for my $file (@files) {
    next if -f $file;
    open my $fh, '>', $file or die $!;
}
于 2012-08-23T10:45:53.890 に答える
0

出力用にファイルを開くだけで、ファイルが作成されます。

ファイル名のリストがどこから来たのかはわかりませんが、以下のプログラムではそれをハードコーディングしています。

$fhファイル ハンドルは、ループの各サイクルの終わりに変数がスコープ外になると Perl によって自動的に閉じられるため、閉じる必要がないことに注意してください。

-eオペレータは、ファイルが存在するかどうかを確認します。-fまたは、ノードが存在し、ディレクトリではない場合に trueを使用することもできます。同じ名前のディレクトリが既に存在する場合、open失敗します。

use strict;
use warnings;

my @files = qw/
  UEDP01_20120821.csv
  UEDP02_20120821.csv
  UEDP03_20120821.csv
  UEDP04_20120821.csv
  UEDP05_20120821.csv
/;

for my $file (@files) {
  open my $fh, '>', $file or die $! unless -e $file;
}

アップデート

Bill Ruppert が提案したように、ファイルが存在するかどうかに関係なく、追加のためにファイルを開くことを好むかもしれません。これにより、必要に応じてファイルが作成されますが、既に存在する場合はそのまま残ります

use strict;
use warnings;

my @files = qw/
  UEDP01_20120821.csv
  UEDP02_20120821.csv
  UEDP03_20120821.csv
  UEDP04_20120821.csv
  UEDP05_20120821.csv
/;

open my $fh, '>>', $_ or die $! for @files;
于 2012-08-23T10:44:07.993 に答える