GNU/Linux >> Linux の 問題 >  >> Linux

パスなしでfindコマンドから名前だけを取得する方法

find trunk/messages/ -name "*.po" -exec basename {} .po \; を使用

例と説明:

いくつかのテスト ファイルを作成します:

$ touch test1.po  
$ touch test2.po  
$ find . -name "*.po" -print
./test1.po  
./test2.po

OK、パスを含むファイルが見つかりました。

結果ごとに basename を実行します 、名前の .po 部分を取り除きます

$ find . -name "*.po" -exec basename \{} .po \;  
test1  
test2

-execdir を使用できます パスなしでファイルを出力するパラメータ、例:

find . -name "*.po" -execdir echo {} ';'

拡張子のないファイル:

find . -name "*.txt" -execdir basename {} .po ';'

参照:GNU find -execdir コマンドの動作が BSD find と異なるのはなぜですか?


ここで見つけたコマンドに基づいています:http://www.unixcl.com/2009/08/remove-path-from-find-result-in-bash.html

sed を使用してこれを行うことができます (これは basename よりも高速に実行されました アプローチ):

find trunk/messages/ -name "*.po" | sed 's!.*/!!' | sed 's!.po!!'

Linux
  1. 検索コマンドの後にMvコマンドを統合する方法は?

  2. Lsのある日付の後に作成されたファイルのみを取得するにはどうすればよいですか?

  3. Linux –コマンドラインからインテルアーキテクチャーファミリーを見つける方法は?

  1. シンボリックリンクの宛先のみを検索しますか?

  2. サブディレクトリではなく現在のディレクトリのみで「find」コマンドを実行する方法

  3. find でディレクトリを除外する方法。指図

  1. Linuxコマンド:テキストファイルのみを「検索」する方法は?

  2. Linuxの「検索」でファイル名のみを取得するには?

  3. CからLinuxで現在のファイル(pwd)へのパスを取得する方法は?