2013-01-31 36 views
1

在一個目錄(我在Linux下工作),我有一個像100個子目錄命名,如:name_02randomnumber基本名稱的多個文件

如:

John_023338898963 
MARK_022672389892 
Petra_02326288918 

在每一個子目錄是一個子目錄至極的名字就像是randomnumber_analyse和該子目錄是一個名爲first的文件。在最後一個子目錄中,first是一個名爲first_TR_first的文件。

所以我有100 first_TR_first文件。我想獲取所有這些文件,重命名並將它們複製到一個文件夾中。

我想要複製到的文件夾是一個名爲allfiles的文件夾,位於具有100個子目錄的目錄中(因此該文件夾是101st子目錄)。

重命名很困難。 56 first_TR_first文件需要重命名爲AAAnumber

例如

AAA1 
AAA2 
... 
AAA56 

其他44個文件需要重新命名爲BBBnumber

例如

BBB1 
BBB2 
... 
BBB44 

我有2個.text文件,其目錄中有101個子目錄。一個帶有name_02randomnumber子目錄的56個名稱,另一個帶有另外44個名稱。

我已經讀了很多,並嘗試了很多,但我不能得到它的工作。有沒有人有任何想法或我必須提供更多的信息?

+1

你的問題很混亂。你說有一個名爲'first'的文件,但是你說它是一個子目錄。你說有100'first_TR_first',但下一段說只有56個,還有44個其他文件。 – Barmar

回答

1

首先,你可以使用find找到您的文件:

find . -name "first_TR_first" -type f 

這將列出所有的文件(目錄),他們在

你的描述的其餘部分損失。我。我想你可以保留兩個計數器,一個用於AAA文件,另一個用於BBB文件,但你怎麼知道哪個是哪個?

澄清你的問題,然後關閉它。給我們一個例子,說明如何安排事情。然後解釋你想要什麼以及它應該是什麼樣子。同時解釋你做了什麼以及你嘗試過的shell腳本或命令。

這裏的人喜歡幫忙,但我們也希望看到別人做了一些工作。

當你在它的時候,註冊在StackOverflow並閱讀一下這個網站的工作原理。

0
c=0; for i in `find . -name 'first_TR_first' -print |head -56`; do let c=c+1; cp $i allfiles/AAA$c;done 

c=0; for i in `find . -name 'first_TR_first' -print |tail -44`; do let c=c+1; cp $i allfiles/BBB$c;done 

這兩個命令都是單個長行。您可能需要調整-44和-56以及c =數字以使其正確。

相關問題