Linuxコマンドに基づいてフォルダー内の特定のファイルパスを抽出します

Linuxコマンドに基づいてフォルダー内の特定のファイルパスを抽出します

最近では、特定のフォルダ内の特定のファイルを自動的に検索する必要があり、ファイルパスとファイル名を別々に保存する必要があります。 Python の walk を使って実現することもできますが、少し複雑に感じます。そこで、Linux の組み込みコマンドでこのタスクを完了できるかどうかを確認したいと思います。

環境

検索対象となるディレクトリ構造は次のとおりです

. |____test | |____test2.txt | |____test.py | |____test.txt | |____regex.py |____MongoDB | |____.gitignore | |____cnt_fail.py | |____db

目標1: すべてのpyファイル名を取得する

find . -name '*.py'のみを使用して検索すると、結果はパスになります

./テスト/テスト.py
./テスト/正規表現.py
./MongoDB/cnt_fail.py

ファイル名だけが必要な場合は、Linuxが提供するコマンドbasenameを使用できます。

basename を使用して find のすべての検索結果を処理するには、find のパラメータ -exec を使用する必要があります。

最後のコマンドは次のとおりです。

find . -name '*.py' -exec basename {} \;

結果:

テスト
正規表現.py
cnt_fail.py

{} は -exec オプションと組み合わせて使用​​され、すべての結果を照合してファイル名を抽出します。

目標 2: すべての py ファイル パスを取得し、重複を削除し、先頭の「./」文字を削除します。

Linuxにはファイルパスを取得するコマンドdirnameもあります

前のコマンドを少し変更して、すべてのファイルパスを表示します。

find . -name '*.py' -exec dirname {} \;
検索結果:

。/テスト
。/テスト
./モンゴDB

重複したパスがあることがわかります。Linux で重複を削除するには、sort を使用して -u パラメータを追加します。-u パラメータは、ソート結果の重複を削除するために使用されます。前のコマンドの出力を入力として sort に渡す必要があり、当然パイプが考えられます。

パイプ コマンド演算子は | であり、前のコマンドによって送信された正しい出力情報、つまり標準出力情報のみを処理できます。
エラー メッセージを直接処理する機能はありません。その後、標準入力として次のコマンドに渡されます。

ソートを追加した後のコマンドは

find . -name '*.py' -exec dirname {} \; | sort -u

実行結果は次のとおりです。

./モンゴDB
。/テスト

最後に、cut を使用して各パスの前の ./ 文字を削除します。パラメータ -c3- は、文字列の 3 番目の文字 (開始位置は 1) から末尾までの部分文字列を抽出することを意味します。最後のコマンドは次のとおりです。

find . -name '*.py' -exec dirname {} \; | sort -u | cut -c3-

実行結果:

モンゴDB
テスト

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • rpm パッケージを解凍する Linux コマンドと rpm コマンドの使用方法の紹介
  • 効率を向上できる Linux コマンドエイリアス 10 個のまとめ
  • Linux コマンドにおける Ctrl+z、Ctrl+c、Ctrl+d の違いと使い方
  • 日付フォルダまたはファイルを作成する Linux コマンドのサンプルコード
  • Linuxターミナルでコマンド出力をファイルに保存する方法
  • 最も包括的な Linux コマンドのコレクション (例付き)

<<:  エレメントアバターアップロード練習

>>:  Mysql 更新マルチテーブル共同更新方法の概要

推薦する

よく使用される入力テキストボックスの内容は自動的に垂直方向に中央揃えされ、クリックするとデフォルトのプロンプトテキストは空になります。

3つの機能: 1. コンテンツの垂直方向の自動中央揃え2. デフォルトのプロンプトテキストは灰色で表...

ミニプログラムは左スライドのドロワーメニューをネイティブに実装します

目次WXS レスポンス イベントプランAページ構造とスタイルWXS イベントコールバック関数WXS ...

Meituan DBデータをデータウェアハウスに同期するアーキテクチャと実践

背景データ ウェアハウス モデリングでは、何ら処理されていない元のビジネス レイヤー データは OD...

hrefを使用すると、リンクをクリックするだけでページ上の特定の場所にジャンプできます。

ページ内の a タグをクリックした後、ページ内の対応する場所にジャンプするようにします。方法は非常に...

VUEのデータプロキシとイベントの詳細な説明

目次Object.defineProperty メソッドのレビューデータブローカーとは何ですか? V...

Vue でデータコレクターを設計する

目次シナリオ中核問題ステータス監視状態監視の利点国家監視の欠点復興実行のアイデア依存関係の収集要約す...

CentOS6.8 は cmake を使用して MySQL5.7.18 をインストールします。

オンライン情報を参考に、cmakeを使用してCentOS6.8サーバーにMySQL5.7.18をイン...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

Vue3 を使用してアップロード コンポーネントを実装するためのサンプル コード

目次一般的なアップロードコンポーネントの開発以下の機能を実装する必要がありますカスタムテンプレートサ...

HTML タグのネスト規則の紹介

XHTML タグには、div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、s...

shtmlとhtmlの違い

Shtml と asp は似ています。shtml という名前のファイルでは、asp の命令と同様に、...

水平ヒストグラムを作成するための MySQL ソリューション

序文ヒストグラムは、RDBMS によって提供される基本的な統計情報です。最も一般的に使用されるのは、...

SQLのさまざまな結合サマリーの詳細な説明

SQL 左結合、右結合、内部結合、自然結合 さまざまな結合の概要SQL には、左結合、右結合、内部結...

知らないかもしれない奇妙で興味深いDockerコマンド

はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...