解析和更改所有子目录中的文件

时间:2012-03-26 20:44:14

标签: bash

我想解析子目录中的所有文件* .c,并在字符串前加上文件名,并将文件放在同一个子目录中。

例如,如果dir1 / subdir1 / test.c中有文件,我想将该文件名更改为xyztest.c并将其放在dir1 / subdir1 /中。怎么做?

我想用bash脚本做。

谢谢,

3 个答案:

答案 0 :(得分:1)

您需要的是:

  1. 查找目录中的所有c文件(使用find命令)
  2. 分隔filname和dirname(使用basenamedirname
  3. 将dirname / filename移至dirname / prefix_filename
  4. 应该这样做。

答案 1 :(得分: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")

答案 2 :(得分:0)

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

如果文件名带有双引号或varous其他shell元字符,则会失败;但如果你不这样做,这是一个很好的单行。