サイトを検索して同様の質問を見ましたが、うまくいくことはできません。私は以下に従おうとしています。文字列を特定の場所に分割しかし、成功しませんでした。私はコーエンと一緒に働いています。
私は主に渡されるファイルのディレクトリが欲しい。したがって、ファイルは次のようになります。
/home/me/working/from/here/howareyou.txt
だから私は以下を取得したいと思います:
/home/me/working/from/here/
私は成功せずにこれを試しました。
THEDIR="${1%//*}"
しかし、それは全体の議論を吐き出すだけです。どんな助けでも大変感謝します。ありがとうございます。
答え1
スラッシュを使う
THEDIR="${1%/*}"
遅いですが覚えやすいですdirname
。
答え2
私はrevでcutを使うのが好きです。デフォルトでは、ファイルのフルパスをrevにパイプして文字列名を逆に変更します。その後、パイプを介して切断し、目的のフィールド番号の後に「-」を追加してから反転します。
結果は似ています。
echo "$name" | rev | cut -d'/' -f2- | rev
まだわからない場合は、区切り文字(-dでマーク)の周りに文字列を分割し、目的のフィールド(-fでマーク)を選択します(文字列の2番目の部分が必要であるという意味で2を渡します)。マイナス記号を追加します。文字は文字列の最後まで必要であることを意味します。 (マイナス記号を使用しないと、次の区切り文字で文字列が停止します。)