Bash 解析和更改所有子目录中的文件
我想解析子目录中的所有文件*.c,并在文件名前加一个字符串,然后将文件放在同一个子目录中 例如,如果dir1/subdir1/test.c中有一个文件,我想将该文件名更改为xyztest.c,并将其放置在dir1/subdir1/中。怎么做 我想用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
Find
命令)basename
和dirname
)Find
命令)basename
和dirname
)这应该可以做到。带有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元字符,则此操作将失败;但如果你不这样做,这是一个很好的一行。什么语言?这很模糊。什么语言?这是相当模糊的。