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

Bash 解析和更改所有子目录中的文件,bash,Bash,我想解析子目录中的所有文件*.c,并在文件名前加一个字符串,然后将文件放在同一个子目录中 例如,如果dir1/subdir1/test.c中有一个文件,我想将该文件名更改为xyztest.c,并将其放置在dir1/subdir1/中。怎么做 我想用bash脚本来做 谢谢,您需要的是: 查找目录中的所有c文件(使用Find命令) 将filname和dirname分开(使用basename和dirname) 将dirname/filename移动到dirname/prefix\u filename

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

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

我想用bash脚本来做

谢谢,

您需要的是:

  • 查找目录中的所有c文件(使用
    Find
    命令)
  • 将filname和dirname分开(使用
    basename
    dirname
  • 将dirname/filename移动到dirname/prefix\u filename
  • 应该可以了。

    您需要的是:

  • 查找目录中的所有c文件(使用
    Find
    命令)
  • 将filname和dirname分开(使用
    basename
    dirname
  • 将dirname/filename移动到dirname/prefix\u filename

  • 这应该可以做到。

    带有while循环的find命令应该可以做到:

    PREFIX=xyz; 
    while read line
    do
       path="$(dirname $line)"
       base="$(basename $line)";
       mv "${line}" "$path/${PREFIX}${base}"
    done < <(find dir1 -name "*.c")
    
    前缀=xyz;
    读行时
    做
    path=“$(dirname$行)”
    base=“$(basename$行)”;
    mv“${line}”“$path/${PREFIX}${base}”
    
    done<带有while循环的find命令应该执行以下操作:

    PREFIX=xyz; 
    while read line
    do
       path="$(dirname $line)"
       base="$(basename $line)";
       mv "${line}" "$path/${PREFIX}${base}"
    done < <(find dir1 -name "*.c")
    
    前缀=xyz;
    读行时
    做
    path=“$(dirname$行)”
    base=“$(basename$行)”;
    mv“${line}”“$path/${PREFIX}${base}”
    完成<
    如果文件名带有双引号或各种其他shell元字符,则此操作将失败;但如果你不这样做,这是一个很好的一行


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

    什么语言?这很模糊。什么语言?这是相当模糊的。