次のような不明な名前のファイルを含むディレクトリがあります。
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
既に存在するファイルを作成しようとしても文句はありません。
このソリューションは、下線の後にスペースがある場合にも機能します。