フォルダAと(フォルダA内のフォルダB)のすべてのファイル名を見つける方法は?

フォルダAと(フォルダA内のフォルダB)のすべてのファイル名を見つける方法は?

ファイル内のすべてのファイル名を一覧表示したいフォルダAそして別のフォルダB~へフォルダAそしてテキストファイルとして保存してみてください。私が使用するコードは次のとおりです。

ls -1 /home/CSV_XXX/* | grep ^'/home/CSV_XXX' >/home/Lists.txt

次のようなファイルがあるとしましょう。CSV_XXXディレクトリへ」/ホーム/CSV_XXX'&含む:

20161010
BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.

'20161010「中にフォルダがあります。CSV_XXXディレクトリ」/ホーム/CSV_XXX/20161010'&含む:

BDL_EXISTING_CARDS2_20161010.CSV
BDL_EXISTING_COLLATERAL_20161010.CSV
BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.

しかし、私は欲しいものを手に入れませんでした。

最初の試みで得られた結果は次のとおりです。

/home/CSV_XXX/BDL_EXISTING_CARDS2_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_COLLATERAL_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.
/home/CSV_XXX/20161010:

20161010フォルダの内容のリストがありません。

また、ディレクトリをどのように削除できますか?/ホーム/CSV_XXX/「心が変わってリストから削除するとどうなりますか?

単なるリスト(含まれています20161010):

BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.

答え1

findコマンドを使用する方が良いかもしれません。

例えば

find /home/CSV_XXX -type f -print

CSV_XXXディレクトリの下のすべてのディレクトリにあるすべてのファイルが繰り返し一覧表示されます。

特定のパターンに一致するファイルだけが必要な場合は、次のようにできます。

find /home/CSV_XXX -type f -name '*.csv' -print

次のファイル名のみが印刷されます。.csv

リストにディレクトリを含めるには、その-type f部分をスキップしてください。

ディレクトリプレフィックスを削除します。

( cd /home/CSV_XXX ; find * -type f -name '*.csv' -print )

答え2

デフォルトではls再帰はありません。-Rサブディレクトリに配置するには、フラグを追加する必要があります。デフォルトでは、提供されるフルパス名は提供されませんが、これがfindより良いコマンドであることがわかります。lsfind

リスト出力からファイルを削除するにはgrep -v

lsおよびマニュアルページで詳細をfind確認できますgrep

関連情報