ターゲット:すべての.htmlファイルのフルディレクトリパス(名前を含む)を含む出力.txtファイルとは別に.htmlファイル名に「txt」または「text」を含むファイルの場合。
次の行では、ファイルの完全なディレクトリパスと一緒に必要な.txtファイルを提供することがわかりました。唯一の問題は、フォルダのすべてのコンテンツを提供することです。
ls -d "$PWD"/* > fileList.txt
結果の例:
/Users/username/Desktop/WebsiteFiles/notes.txt
/Users/username/Desktop/WebsiteFiles/index.html
/Users/username/Desktop/WebsiteFiles/index-TEXT.html
/Users/username/Desktop/WebsiteFiles/answers.html
/Users/username/Desktop/WebsiteFiles/answers_txt.html
/Users/username/Desktop/WebsiteFiles/image.jpg
/Users/username/Desktop/WebsiteFiles/image2.jpg
/Users/username/Desktop/WebsiteFiles/about.html
/Users/username/Desktop/WebsiteFiles/about_TXT.html
/Users/username/Desktop/WebsiteFiles/contact.html
/Users/username/Desktop/WebsiteFiles/contact_text.html
/Users/username/Desktop/WebsiteFiles/images
望ましい結果:
/Users/username/Desktop/WebsiteFiles/index.html
/Users/username/Desktop/WebsiteFiles/answers.html
/Users/username/Desktop/WebsiteFiles/about.html
/Users/username/Desktop/WebsiteFiles/contact.html
実験:
私はコマンドラインを初めて使用します。私はこの問題を解決しようとしてきました。私は以下を見つけました探すすべての.htmlファイルを見つけるのに役立ちます。
find . -iname '*.html'
親ディレクトリで使用すると、すべての.htmlファイルが提供されますが、完全なディレクトリパスは提供されません。結果の例:
./index.html
./index-TEXT.html
./answers.html
./answers_txt.html
./about.html
./about_TXT.html
./contact.html
./contact_text.html
私はパラメータやこれらのコマンドの組み合わせについて十分に慣れておらず、名前に「テキスト」バリアントがないと、.htmlファイルを印刷することに成功しませんでした。
私トーンこのルックアップファイルを使用するには、フルパスを含む.txtファイルが必要です。これについてもっと知りたいので、詳しく答えてください!
ベストアンサー1
find
指定されたパスで見つかった名前を出力するので、ビルドコマンドを開始できます。
find /Users/username/Desktop/WebsiteFiles
それとも現在あなたがいる場所なら、
find "$PWD"
次に、見つかった名前を一致する名前に限定します*.html
。
find "$PWD" -type f -name '*.html'
*.html
および*.HTML
/または両方のファイルがあり、*.hTmL
それらを含めるには-name
(-iname
大文字と小文字を区別しない名前の一致を実行する)に変更します。
-type f
私もチャンスがあれば追加します目次名前が一致します*.html
(結果からこれを見たくありません)。-type f
名前を通常のファイル名に限定します。
その後、結果から特定のファイル名を削除しようとします。文字列txt
またはtext
名前(大文字または小文字)を含みます。これは、以下を使用して-iname
テストを否定することによって行うことができます!
。
find "$PWD" -type f -name '*.html' ! -iname "*txt*" ! -iname "*text*"
これでわかります。
各「述語」(-type f
など)は、特定のディレクトリの名前に対するテストのように動作し、テスト間に暗黙の論理ANDがあります。すべてのテストに合格すると、名前が印刷されます。
ディレクトリ内のファイルを使用してマイコンピュータの一時ディレクトリで実行する(テスト用の空のファイル):
$ ls -l
total 24
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 about.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 about_TXT.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 answers.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 answers_txt.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 contact.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 contact_text.html
-rw-r--r-- 1 kk wheel 596 Sep 26 17:46 files
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 image.jpg
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 image2.jpg
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 images
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 index-TEXT.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 index.html
-rw-r--r-- 1 kk wheel 0 Sep 26 17:47 notes.txt
-rw-r--r-- 1 kk wheel 10240 Sep 26 19:11 test.tar
$ find "$PWD" -type f -name '*.html' ! -iname "*txt*" ! -iname "*text*"
/tmp/shell-ksh.p56GA7BA/index.html
/tmp/shell-ksh.p56GA7BA/answers.html
/tmp/shell-ksh.p56GA7BA/about.html
/tmp/shell-ksh.p56GA7BA/contact.html