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

推薦する

React プロジェクトにおける TypeScript の使用の概要

序文この記事では、TS の基本的な概念ではなく、プロジェクトで TypeScript (以下、TS ...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...

Vueタイマーの実装方法

この記事では、参考までにタイマーを実装するためのVueの具体的なコードを紹介します。具体的な内容は次...

Winows Server 2019 アクティベーション コードとボリューム ライセンス エディション KMS インストール キー GVLK

最近、社内文書の整理とファイルサーバーの構成を予定しています。以前はサーバー2003を使い慣れていま...

React でインデックスをキーとして使用することが推奨されないのはなぜですか?

1. 古い仮想DOMと新しい仮想DOMを比較し、まずキーが同じかどうかを確認します。 2. 引き続...

Java は Apache.POI を使用して HSSFWorkbook を Excel にエクスポートします

Apache.POI の HSSFWorkbook を使用して Excel にエクスポートします。具...

Dockerのオンラインおよびオフラインインストールと一般的なコマンド操作

1. テスト環境名前バージョンセント7.6ドッカー18.09.06 2. オンラインインストールここ...

Linux TTY/PTS の違いの概要

キーボードで文字を入力すると、対応するプロセスにどのように送信されるのでしょうか? ps や who...

Keras を使って SQL インジェクション攻撃を判断する (例の説明)

この記事では、ディープラーニングフレームワーク keras を使用して、SQL インジェクションの特...

MySQLへのJava接続の基礎となるカプセル化の詳細な説明

この記事では、Java接続MySQLの基礎となるカプセル化コードを参考までに紹介します。具体的な内容...

MySQL ユーザー変数と set ステートメントの例の詳細な説明

目次1 ユーザー変数の概要2 ユーザー変数の定義3 ユーザー変数の使用3.1 セットを通した例3.2...

CSS を使用して 3 つのステップでショッピング モールのカード クーポンを作成する

今日は618日、主要なショッピングモールはすべてプロモーション活動を行っています。今日は、次のように...

Vueのvue-tree-colorコンポーネントの組織構造図の事例を詳しく解説

目次ネプローダーをインストールするプラグインのインポート始める配置折りたたみディスプレイノードをクリ...

Ubuntu 18.04 で apt ソースを Alibaba Cloud ソースに変更する詳細なプロセス

目次序文: Ubuntu 18.04 は apt ソースを Alibaba Cloud ソースに変更...

CSS が最初のサイクルで画像を読み込むために @keyframes を使用するときに発生するホワイトギャップの問題 (フラッシュ画面) をすばやく解決します。

問題の説明: CSS アニメーション プロパティを使用すると、ループが最初に読み込まれたときに白いギ...