再帰的なファイルの生成とネストされたサブディレクトリに関連する問題を解決しようとしています。次の入れ子になったディレクトリ構造を作成するコマンドを作成しました。
mkdir -p {2019,2020}/{01..03}
├── 2019
│ ├── 01
│ ├── 02
│ ├── 03
├── 2020
│ ├── 01
│ ├── 02
│ ├── 03
親ディレクトリは年を表し、サブディレクトリは番号付き月に対応します。 1月は01、2月は02などです。
cal
私は組み込み関数と一緒にこのディレクトリ構造を使用して、各サブディレクトリ名に対応するカレンダー年と月の印刷ファイルを繰り返し生成する方法を理解しようとしています。予想される出力は次のとおりです。
├── 2019
│ ├── 01
| | ├── 01-2019-cal.dat
│ ├── 02
| | ├── 02-2019-cal.dat
│ ├── 03
| | ├── 03-2019-cal.dat
├── 2020
│ ├── 01
| | ├── 01-2020-cal.dat
│ ├── 02
| | ├── 02-2020-cal.dat
│ ├── 03
| | ├── 03-2020-cal.dat
たとえば、特定の年と月にこの操作を一度だけ実行するコマンドはですcal 03 2020 > 03-2020-cal.dat
。しかし、ディレクトリ構造自体をに渡し、cal
正しい場所に正しい出力を生成してこの問題を解決するにはどうすればよいですか?これは私のコマンドライン技術の絶対的な制限です...このコマンドを使用して、類似の要素に関する質問に対するいくつかの答えをここで見ましたが、find
私が読んでいるものを実際に理解していません。
助けてくれてありがとう。
答え1
私がbashに初めて触れなかった場合は、次のことを試すことができます。
for d in */*; do
cal "${d#*/}" "${d%/*}" > "${d%/*}/${d#*/}/${d#*/}-${d%/*}-cal.dat"
done
年フォルダが含まれているディレクトリにあるとします。
結果:
├── 2019
│ ├── 01
│ │ └── 01-2019-cal.dat
│ ├── 02
│ │ └── 02-2019-cal.dat
│ └── 03
│ └── 03-2019-cal.dat
├── 2020
│ ├── 01
│ │ └── 01-2020-cal.dat
│ ├── 02
│ │ └── 02-2020-cal.dat
│ └── 03
│ └── 03-2020-cal.dat
cat
ファイルの1つ:
cat 01-2019-cal.dat
出力(スペイン語版は申し訳ありません):
Enero 2019
do lu ma mi ju vi sá
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
秘訣は次のとおりです。パラメータ拡張。