1. ホーム
  2. bash

最後のスラッシュでパスを分割するには?

2023-09-07 09:49:24

質問

私は、あるファイル(例えば list.txt というファイルがあって、そこにはファイルへの相対パスが1行に1つずつ書かれています。

foo/bar/file1
foo/bar/baz/file2
goo/file3

一度に1つのパスを処理し、最後のスラッシュで分割して、パスの2つの部分を引数として与える別のプロセスを起動するbashスクリプトを書く必要があります。今のところ、私はループの部分だけを持っています。

for p in `cat list.txt`
do
   # split $p like "foo/bar/file1" into "foo/bar/" as part1 and "file1" as part2
   inner_process.sh $part1 $part2
done

どのように分割すればよいのでしょうか?パスがスラッシュを持たない縮退したケースでも動作するのでしょうか?

どのように解決するのですか?

使用方法 basenamedirname であれば、それで十分です。

part1=$(dirname "$p")
part2=$(basename "$p")