指定されたファイル名を持つファイルを一覧表示する awk スクリプト

指定されたファイル名を持つファイルを一覧表示する awk スクリプト

awk文字列をパターンとして使用し、名前にこのパターンを含むディレクトリ内のすべてのファイルを一覧表示するスクリプトを作成しようとしています。しかし、awk関数にディレクトリ内のすべてのファイル名を読み取るように指示する方法がわかりません(findこの場合、コマンドは役に立ちません)。私の入力モードは日付形式YYYYMMDDで、私のファイル形式はYYYY-MM-DD

.awkこれが私のファイルでやりたいことです。

#! /usr/bin/awk -f

BEGIN{
Directory="history/"

date="20180522"

validDate=substr(date,0,4)"-"substr(date,5,2)"-"substr(date,7,2)
printf Directory
system("find $Directory -maxdepth 1 -type f -name \"validDate*\" ") 
}

問題は、先に定義したsystemget write値をどのように区別するかである。$Directory$validDate

ベストアンサー1

awkユーザーから日付を形式にインポートしてから、ファイルを検索するYYYYMMDDためYYYY-MM-DDの形式に変換したいようです。

awkインタラクティブプログラミングよりもストリーム解析に適しています。また、ファイル階層をナビゲートする方法もわかりません。

以下は、シェルスクリプトを使用してユーザーからデータを読み取り、それを使用してfindファイルを検索する提案です。

#!/bin/sh

thedate="$1"

if [ -z "$thedate" ]; then
    printf 'Enter year (YYYY): ' >&2
    read theyear
    printf 'Enter month  (MM): ' >&2
    read themonth
    printf 'Enter day    (DD): ' >&2
    read theday

    thedate="$theyear-$themonth-$theday"
fi

find /path/to/history -type f -name "*$thedate*"

コマンドライン引数を使用または使用せずにスクリプトを実行できます。スクリプトがコマンドライン引数で使用されていることを検出した場合は、正しい形式の日付文字列であると仮定してそのまま使用してファイルを見つけます。

おすすめ記事