我想解析子目录中的所有文件* .c,并在字符串前加上文件名,并将文件放在同一个子目录中。
例如,如果dir1 / subdir1 / test.c中有文件,我想将该文件名更改为xyztest.c并将其放在dir1 / subdir1 /中。怎么做?
我想用bash脚本做。
谢谢,
答案 0 :(得分:1)
您需要的是:
find
命令)basename
和dirname
)应该这样做。
答案 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元字符,则会失败;但如果你不这样做,这是一个很好的单行。