私は大学で「名前」で終わるディレクトリとサブディレクトリからすべてのファイルを見つける練習をしました。
私は次のコマンドに達しました。
ls *.xls /users/home/DESKTOP/*SCHEDULE
これにより、デスクトップに.xlsファイルのみが表示され、名前にSCHEDULEを含むすべてのディレクトリが開きますが、それを行うと、.xlsファイルのみを含むディレクトリ内のすべてのファイルが表示されます。
答え1
「ファイル」は、ディレクトリ、シンボリックリンク、ソケット、名前付きパイプなどではなく、「一般ファイル」を意味すると仮定します。
.xls
ファイル名のサフィックスがあり、現在のディレクトリのディレクトリの内側または下にあり、名前に対応するSCHEDULE
文字列を含むすべての一般的なファイルを見つけるには、次の手順を実行します。
find . -type f -path '*SCHEDULE*/*' -name '*.xls'
-type f
現在処理中のファイル形式をテストしますfind
。通常のファイル(タイプf
)の場合は、次のテストが考慮されます(そうでない場合はファイルでない場合は、次のテストが検証されます)。
このテストは、現在スキャンしている-path
ファイルのフルパス名のテストです。find
このパス名が一致すると、*SCHEDULE*/*
次のテストが考慮されます。パターンの後者SCHEDULE
のため、パターンはディレクトリ名(最終ファイル名ではない)とのみ一致します。/
最後のテストはファイル名です.xls
。
デフォルトでは、すべてのテストに合格したすべてのパス名が印刷されます。
コマンドを次のように短縮することもできます。
find . -type f -path '*SCHEDULE*/*.xls'
答え2
利用できるfind . -name "*.xml" -type f -path './file/location/* -exec xmllint --output '{}' --format '{}' \;
その後、./file/location/で* .xmlファイルを見つけてxmllintを使用して処理し、その形式を使用して各.xmlファイルを出力します。