2015-11-03 150 views
-2

我正在Linux上工作, 我有一個文件夾包含許多子文件夾,在每個子文件夾中有一個名爲Analyze.txt的文件。 我想將所有這些文件(Analyze.txt)移動到一個文件夾中,並將文件Analyze.txt的名稱更改爲其源自的子文件夾的名稱。linux如何將文件名更改爲其文件夾的名稱?

感謝,

拉茲

回答

0

創建一個bash腳本.SH並給它正確的權限

chmod +x <file>.sh 

讓我們看到代碼編寫成劇本。

cd <path-to-root> 

現在你需要循環的每個子文件夾,文件重命名,然後將其移動到目標目錄:所有移動到根目錄下的 首先

for dir in `ls`; do 
    if [[ -d $dir ]]; then 
     cd $dir 
     mv ./Analyze.txt ./$dir.txt 
     mv ./$dir.txt <path-to-dest-directory> 
     cd .. 
    fi 
done 

有了這個代碼我假定目標目錄不在樹的根目錄中。

+0

是否可以操作$ dir以僅包含部分文件夾名稱?例如$ dir =^[0-9] * - [0-9] * - [0-9] * _ [0-9h] * - [0-9m] * - [0-9s] * _( 。*);那麼$ name = $ 1#(。*)? – xbarvazx

+0

是的,你可以使用正則表達式。看看這個答案:[Bash正則表達式if語句](http://stackoverflow.com/questions/18709962/bash-regex-if-statement)@xbarvazx – fattidare

相關問題