2012-03-26 96 views
1

我想解析子目錄中的所有文件* .c,並將字符串前綴爲文件名並將文件放在同一子目錄中。解析並更改所有子目錄中的文件

例如,如果dir1/subdir1/test.c中有文件,我想將該文件名更改爲xyztest.c並將其放在dir1/subdir1 /中。怎麼做?

我想在bash腳本中做。

感謝,

+0

這是作業嗎? – 2012-03-26 20:49:19

+0

什麼語言?這非常含糊。 – FlavorScape 2012-03-26 20:50:06

回答

0

與while循環應該這樣做find命令:

PREFIX=xyz; 
while read line 
do 
    path="$(dirname $line)" 
    base="$(basename $line)"; 
    mv "${line}" "$path/${PREFIX}${base}" 
done < <(find dir1 -name "*.c") 
+0

謝謝,這就像一個魅力。 – user1293997 2012-03-26 21:28:34

1

你需要的是:

  1. 查找目錄中的所有C文件(使用find命令)
  2. 分開FILNAME和目錄名(使用basenamedirname
  3. 將dirname/filename移至dirname/prefix_filename

這應該做到這一點。

0
find dir -name '*.c' -printf 'mv "%p" "%h/xyz%f"\n' | sh 

,如果你有雙引號的文件名這將失敗,或varous其他shell字符;但如果你不這樣做,這是一個很好的單線程。

相關問題