1

これは私がこれまでに持っているものです:

for f in 'svn ls repository_dir'; 
do 
svn checkout repository_dir/$f/trunk/dir1/dir2/dir3/dir4/needed_dir 
done

これは、needed_dir が正しい場所にあるプロジェクト (数百のプロジェクト) でうまく機能します。ただし、一部のプロジェクト ($f) のディレクトリ構造は少し異なります。したがって、「needed_dir」は別の場所にある可能性があります。

do loopで、bash スクリプトに次のように指示するにはどうすればよいですか。

「「needed_dir」を見つけてください。見つかった場合は、チェックしてください。」

または

「「needed_file.txt」を探します。見つかった場合は、チェックしてください。」

助けてくれてありがとう

EDIT:申し訳ありませんが、これはsuperuser.comの質問かもしれません。本当はそこに書くつもりでした。でも、誰かがここでも私を助けてくれるかもしれません!

4

3 に答える 3

0

このスニペットは機能するはずです。

for f in $(svn ls repository_dir); 
do 
  find repository_dir/$f -type d -name needed_dir | xargs -r svn checkout 
done
于 2013-03-26T06:15:26.790 に答える
0

詳しくは説明しませんが (現時点では時間がないため)、次の例を参考にしてください。

#!/bin/bash

sudo updatedb
if [ ! -f testfile1.txt ];
then
filelocation=$(locate awesomeo.txt)
head -10 $filelocation
fi

ファイル データベースを更新します。探しているファイルが現在のディレクトリにない場合は、ファイルのディレクトリを見つけて、そのファイルの最初の 10 行を表示します。

しかし、あなたの場合は、やりたいことfilelocation=$(locate forloopvariable)や探していることかもしれません。もちろん、これは if ステートメントの代わりに、必要に応じて else ステートメントになります。

他にご不明な点がございましたら、お気軽にお尋ねください。

于 2013-03-26T05:51:15.657 に答える
0

Linuxのfindコマンドが使えます。

find引数として指定したディレクトリ名を再帰的に検索します。
次のようなディレクトリ構造があるとします。

parent
-dir1
--file1
--file2
--file3
-dir2
--file4
--file5
--file6
--dir3

次のコマンドを実行します。

find parent -name dir*

次のような出力が得られます。

parent/dir1
parent/dir2
parent/dir2/dir3

たとえば、以下のコードを参照してください。

#!/bin/sh
parentdir=$1
tofind=$2
for i in `find $parentdir -name $tofind*`;  # * is added for regular expression..do whatever you need here
do
 #check if it is directory
 if [ -d $i ]; then
    # do what you want to do 
    echo $i
 else
    # do something else
    echo $i
 fi
done

これは入力にかかります-->

  1. あなたのsvn親ディレクトリ
  2. 検索するファイル/ディレクトリ名


お役に立てれば。さらに入力が必要な場合はお知らせください。また、この質問
を参照できます

于 2013-03-26T05:28:19.610 に答える