Bash:ディレクトリ名に基づいてファイル名を作成する

Bash:ディレクトリ名に基づいてファイル名を作成する

次のようなディレクトリ構造があるとしましょう。Parent_dir/<name>/<date>/

Parent_dir削除されたbashスクリプトを使用して各サブディレクトリに移動/<name>/<date>/し、サブディレクトリに名前が付けられた空のテキストファイルを作成するにはどうすればよいですか<name>_<date>.txt/<name>/<date>/

ベストアンサー1

からParent_dir

for d in */*/; do f=${d/\//_}; touch -- "$d"/"${f::-1}.txt"; done

これにより、touch既存のファイルのタイムスタンプが変更されます。

まず、練習を実行してtouch次のものを交換できますecho

for d in */*/; do f=${d/\//_}; echo -- "$d"/"${f::-1}.txt"; done
  • for d in */*/2つのレベルのディレクトリを繰り返してみましょう。

  • f=${d/\//_}最初のディレクトリ区切り文字を/次に置き換え、_出力を変数として保存します。f

  • "$d"/"${f::-1}.txt"変数の最後の名前を${f::-1}削除し、目的のファイル名が次のディレクトリ名に展開されます。/f

/inは、変数にディレクトリ区切り文字があるため重複しているdことに注意してください。ほとんどすべてのシステムが単一を使用するため、これは問題ではありません。または、次のことができます。/"$d"/"${f::-1}.txt"////

for d in */*/; do f=${d/\//_}; touch -- "${d}${f::-1}.txt"; done

おすすめ記事