2013-12-17 187 views
1

我有多個目錄,其中包含單個文件,並且所有目錄中的文件都具有相同的名稱。我需要通過其目錄名稱來重命名文件,以便我可以將它們收集到相同的目錄中。通過目錄名稱重命名目錄中的文件

/home/x/Desktop/s0.01-k5/x  
/home/x/Desktop/s0.01-k7/x 
/home/x/Desktop/s0.01-k10/x 

我需要的是將所有的x重命名爲它們的目錄名稱。

+0

http://stackoverflow.com/questions/8886239/renaming-file-with-same-name-as-directory-name應該幫助,只是忽略有關空格部分 – chk

+0

參見[更佳基於多個模式重命名文件的方式](http://stackoverflow.com/questions/20629302/better-way-to-rename-files-based-on-multiple-patterns/25597051#25597051) –

回答

0

進入/ home/x/Desktop。有

for i in */x;do mv -vf "$i" "${i%/x}/${i%/x}";done 

這個命令做你想做的。如果你想知道什麼會hapen,您只需提供一個 「回聲」 的 「MV」 測試:

for i in */x;do echo mv -vf "$i" "${i%/x}/${i%/x}";done 
0

試試這個

CD /家庭/ X /桌面/

for i in $(ls); do mv $i/* $i/$i; done 
+0

[不要解析ls ](http://mywiki.wooledge.org/ParsingLs)。 你也必須引用每一個參數。 –