Bashスクリプトを使用して既存のファイルからファイルを作成する

Bashスクリプトを使用して既存のファイルからファイルを作成する

次のような不明な名前のファイルを含むディレクトリがあります。

apple_2020-01-01.txt
apple_2020-01-02.txt
orange_2020-01-01.txt
pear_2020-01-02.txt
pear_2020-01-03.txt
pear_2020-01-04.txt

bashスクリプトを使用して、ファイルのタイムスタンプに基づいて、独自のタイムスタンプごとに1つずつ新しいファイルを作成したいと思います。

いくつかの仮定をすることができます。

1) ファイル名は常に Fruit_*.txt 形式に従います。

2) ファイル名は apple, orange, pear で指定します。

3)タイムスタンプは常にYYYY-MM-DD形式です。

上記のサンプルファイルに基づいて、スクリプトから次のファイルを生成したいと思います。

NewFile_2020-01-01.txt
NewFile_2020-01-02.txt
NewFile_2020-01-03.txt
NewFile_2020-01-04.txt

この目標をどのように達成できますか?

ベストアンサー1

#!/bin/bash
shopt -s nullglob
for file in {apple,pear,orange}_*.txt; do
    touch "NewFile_${file##*_}";
done

各ファイルのアンダースコア文字までの先頭を削除し、タイムスタンプと拡張子のみを残してNewFile_結果に追加します。

touch既に存在するファイルを作成しようとしても文句はありません。

このソリューションは、下線の後にスペースがある場合にも機能します。

おすすめ記事