絶対パスのファイル名を置き換える簡潔なbashスクリプト

絶対パスのファイル名を置き換える簡潔なbashスクリプト

入力として使用されるbashスクリプトには簡潔で読みやすい関数が必要です。

  • 絶対パス(例:/home/user/tmp/data/sample1.txt)
  • 新しいファイル名(例:extend_sample.dat)

そして戻ってくる

新しいファイル名を持つ絶対パス(例:/home/user/tmp/data/extended_sample.dat)

よろしくお願いします!

ベストアンサー1

パス名の操作を簡単にする2+1(追加)コマンドがあります。

  • basename - ファイル名からディレクトリとサフィックスを削除します。
  • dirname - ファイル名から最後の部分を削除します。

  • readlink - 解決されたシンボリックリンクまたはフルファイル名を印刷します。

したがって、あなたの質問に答えるには:

old_path=/home/user/tmp/data/sample1.txt
new_file=extended_sample.dat

new_path="$(dirname $old_path)/$new_file"

または、ソースファイルのパス名を変更します。

alt_path=/mnt/newroot/foo

new_path="$alt_path/$(basename $old_path)"

実行中のスクリプトの完全な場所を抽出します(スクリプトが独自のファイルで実行されている場合は機能します)。

dirname $(readlink -f ${0})

この3つのコマンドを使用すると、ほとんどのパス操作を簡単に完了できます。

おすすめ記事