2017-12-18 8 views
3

この質問は、私が探しているものと本当に似ています。 Find files and print only their parent directoriesファイルを検索し、partial-parent-folder +ファイル名のみを印刷します。

フルパスを印刷するのではなく、その半分とファイルそのものを印刷したいと思います。

例:

/disk1/data/foo-1/xx.csv 
/disk1/data/foo7/yy.csv 
/disk1/data/bar-2/zz.csv 
/disk1/data/bar9/nn.csv 

と、私は次のように印刷したい:

foo-1/xx.csv 
foo7/yy.csv 
bar-2/zz.csv 
bar9/nn.csv 

私は現在、このコードを使用しています:

それを作業して数ヶ月のためにされて
find ${base_folder} -type f -mmin +2 -name "*.csv" -print | rev | cut -d"/" -f1-2 | rev > ${LIST} 

時間の100%働いた。

同じコードを書く方が優れているかどうかは分かります。

+0

そして、問題は何ですか?あなたはちょうど "かわいい"バージョンがほしいですか? – PesaThe

+0

あなたはGNU 'find'を保証していますか? 'base_folder'の値は何ですか? –

+0

ところで、 'find $ {base_folder}'は 'find $ base_folder'と全く同じように動作します。両方とも' base_folder'が空白に含まれる名前を分割し、その分割プロセスによって作成された単語をグロブとして展開します。その動作を避けたい場合は、展開を引用してください: '' $ base_folder "を見つけるか、$ {base_folder}" ' –

答えて

3

%Pで使用find -printf出力のbase_folderを含めないようにする:

find "$base_folder" -type f -mmin +2 -name "*.csv" -printf '%P\n' 
+0

私はこの解決策が好きです!私は 'sed'で奇妙なことをしようとしていましたが、私は正規表現に熟練していません。テストして作業しています!ありがとうございます!! – Nihvel

関連する問題