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

推薦する

XHTML でのハイパーリンク タグの使用に関するチュートリアル

ハイパーリンク。「リンク」とも呼ばれます。ハイパーリンクは、私たちが閲覧する Web ページのいたる...

Firefoxでリンクをクリックしたときに点線の枠線を削除する方法

今日、ブラウザの互換性の問題にいくつか遭遇しました。そのうちの 1 つは奇妙に感じました。Firef...

JSアルバム画像の揺れと拡大表示効果のサンプルコード

前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...

Nginx のアンチホットリンクを設定する方法

実験環境• 最小限のインストール済みの CentOS 7.3 仮想マシン• 構成: 1 コア/512...

CSS3 での 2D および 3D 変換の実装

CSS3 は、要素の 2D 平面変換と視覚的な 3D 空間変換を実装します。2D 変換はより頻繁に使...

MySQL InnoDB ストレージ エンジンの詳細

序文MySQL では、InnoDB はストレージ エンジン レイヤーに属し、プラグインとしてデータベ...

Tomcat のパフォーマンス最適化のための Apr モジュールの構築方法

序文Tomcat は、無数のチューニング オプションを備えた、広く使用されている Java Web ...

GolangでMySQLデータベースのバックアップを実装する方法

背景Navicat は、最高の MySQL 視覚化ツールです。ただし、ビューのインポートとエクスポー...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

mysql5.7.19 winx64 解凍版のインストールと設定のチュートリアル

mysql 5.7.19 winx64解凍版のインストールチュートリアルを収録しました。具体的な内容...

Vueのwatch、computed、methodsの違いのまとめ

目次1 はじめに2 基本的な使い方2.1 方法2.2 計算プロパティ2.3 リスナーを見る3 3つの...

ティックアニメーション効果を作成するための svg+css または js

以前、上司からログイン後にチェックマークを表示できるプログラムを作るように言われたのですが、Baid...

setup+ref+reactive は vue3 の応答性を実装します

セットアップは、結合された API を記述するために使用されます。テンプレートが使用できるようにする...

CentOS で MySQL 5.1 を 5.5.36 にアップグレードする

CentOS 6.4 環境で MySQL 5.1 を 5.5.36 にアップグレードする手順を記録し...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...