Grep

如何grep文件夾A和(文件夾A內的文件夾B)中的所有文件名?

  • February 17, 2017

我想列出文件夾A中的所有文件名和文件夾A中的另一個****文件夾B,並將其保存到文本文件中。我使用的程式碼是:

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

假設我在目錄“ /home/CSV_XXX ”中有一個名為****CSV_XXX的文件夾,其中包含:

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

20161010 ’ 是 CSV_XXX 內的文件夾**,**目錄為 ’ /home/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 中的內容列表

另外,如果我改變主意將目錄“ /home/CSV_XXX/ ”從列表中刪除,如何刪除它?

只是列表(包括20161010):

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

您可能會更好地使用該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 )

引用自:https://unix.stackexchange.com/questions/345637