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 更新マルチテーブル共同更新方法の概要

推薦する

独自のサーバーを素早く構築する方法の詳細なチュートリアル(Java 環境)

1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...

nginxでの共有メモリの使用に関する詳細な説明

nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...

高品質なウェブページのデザイン方法 高品質なウェブページ(画像とテキスト)のデザイン経験

オープンプラットフォームの増加に伴い、そこから派生するさまざまなアプリケーションサービスも増加傾向に...

MySQLのロック機構に関する最も包括的な説明

目次序文グローバルロック完全なデータベース論理バックアップFTWRL と set global re...

CentOS 7.4 にソースコードから MySQL 8.0 をインストールするための詳細なチュートリアル

目次1. 環境2. 準備3. MySQL 8.0.11をインストールするMySQL 8 の公式バージ...

JavaScript 組み込みの日付と時刻の書式設定のサンプル コード

1. 基礎知識(日付オブジェクトのメソッド) 😜 getFullYear() は年を表す4桁の数字を...

http:// の代わりに // を使用する利点は何ですか (アダプティブ https)

//デフォルトプロトコル/ デフォルト プロトコルの使用は、リソース アクセス プロトコルが現在の...

Vue でのルータービューコンポーネントの使用に関する詳細な説明

Vue プロジェクトを開発する場合、さまざまなコンポーネント ページを表示するために切り替えることが...

Vueタイムラインコンポーネントの使い方

この記事の例では、参考までにvueタイムラインコンポーネントの具体的な実装コードを共有しています。具...

K8Sの高度な機能を理解するための記事

目次K8Sの高度な機能高度な機能要約するkubectl サービスの問題のトラブルシューティングK8S...

EclipseにTomcatサーバー設定を追加する方法

1. ウィンドウ -> 設定を選択してEclipseの設定パネルを開きます。 2. 「設定」ウ...

MySQL 8.0.17 winx64 (Navicat 付き) 手動構成バージョンのインストール チュートリアル図

1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...

ApacheとTomcatによるクラスタ環境構築プロセスの分析

実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...

getdata テーブル テーブル データ 結合 mysql メソッド

パブリック関数 json_product_list($where, $order){ グローバル ...

CSS スタイルを HTML 外部スタイルシートにインポートする方法

リンクインスタイルとは、すべてのスタイルを 1 つ以上の外部スタイルシート ファイルに配置することで...