リソースが削除された後に環境ファイルをクリーンアップするスクリプトを作成しようとしています。問題は、スクリプトが入力として与えられるすべてのものは、それを超える識別情報がゼロのリソースの名前(これは変更できません)です。 リソースが置かれているディレクトリのパスはどのようにして見つけることができますか?bash:サブディレクトリ名が与えられた現在のディレクトリからのパスを取得
ディレクトリは、はるかに広範囲ですが、次のように少し設定されています。これらはすべてファイルではなくディレクトリです。検索するディレクトリは40+個までありますが、一般的には2〜3個以下のディレクトリです。
foo
aaa
aaa_green
aaa_blue
bbb
ccc
ccc_green
bar
ddd
eee
eee_green
eee_blue
fff
fff_green
fff_blue
fff_pink
私はaaa_green
またはちょうどddd
のように入力を渡すことがあります。
例として、eee_blue
を入力すると、私はそこにcdしてディレクトリを削除できるので、作業ディレクトリからeee_blue
のパスを知る必要があります。 IEの場合、私はbar/eee/eee_blue/
またはbar/eee/
のいずれかを返すことを期待していますが、どちらでもかまいません。
私が現在見ることのできる「最良の」オプションは、複数のgrepを使って各ディレクトリの最下位レベルにcdし、それぞれの内容を取得して一致を探し、それが(最終的に)パス。これは率直で、ひどく非効率的です。
私が考えることのできる唯一の代替方法は、まっすぐな再帰的なgrepでしたが、私はそれをテストし、8分後にはまだ実行が完了していませんでした。
このスクリプトは、MacとLinuxの両方でとの両方で実行する必要がありますが、必死のピンチで私はLinuxにしか行けませんでした。
それは 'findではありません。 '-exec rm -fr {} +'やそれに類するものを使用して、おそらく名前を表示するでしょうか?-name 'eee_blue'基本的なことは、「findコマンドを使う」ようです。あなたはそれを知らなかったのですか、それを使用しない理由がありますか? –
@JonathanLeffler Bash noobは、ゼロアイデアが存在することを発見しました。それは気の利いた!私は受け入れることができるので、私の答えのように見えるので、自由に答えてください – Alex