我想更改文件的名称,此更改在中间。我基本上需要删除一部分变量并编写其他内容
i want to change the names of the files and this change is in the middle. i basically need to remove a part of the variable and write something else
我试过了
$ls
casts.c endian.c ptr.c signed-unsigned-representations.c signed-unsigned.c test-hard-link.c
$for i in *.c;do mv "$i" "$i"__swa.c; done
$ls
casts.c__swa.c endian.c__swa.c ptr.c__swa.c signed-unsigned-representations.c__swa.c signed-unsigned.c__swa.c test-hard-link.c__swa.c
我知道,因为我的 i 变量是 *.c,所以当我尝试重命名并添加 (__swa.c) 部分时,它只是添加到变量名称上。
我需要像这样重命名文件:
casts__swa.c endian__swa.c ptr__swa.c signed-unsigned-representations__swa.c signed-unsigned__swa.c test-hard-link__swa.c
使用 Perl 的独立 rename
或 prename
命令:
rename -n 's/\./__swa./' *.c
如果输出看起来没问题,删除 -n
。
使用 Bash 的 parameter expansion ,你可以这样做:
for f in *.c; do
echo mv "$f" "${f%%.c}"__swa.c
done
(当然去掉echo
,如果看起来像就可以了)
但我通常更愿意使用更灵活的 rename
Perl,正如 Cyrus 在回答中所建议的那样。
我试过了
$ls
casts.c endian.c ptr.c signed-unsigned-representations.c signed-unsigned.c test-hard-link.c
$for i in *.c;do mv "$i" "$i"__swa.c; done
$ls
casts.c__swa.c endian.c__swa.c ptr.c__swa.c signed-unsigned-representations.c__swa.c signed-unsigned.c__swa.c test-hard-link.c__swa.c
我知道,因为我的 i 变量是 *.c,所以当我尝试重命名并添加 (__swa.c) 部分时,它只是添加到变量名称上。
我需要像这样重命名文件:
casts__swa.c endian__swa.c ptr__swa.c signed-unsigned-representations__swa.c signed-unsigned__swa.c test-hard-link__swa.c
使用 Perl 的独立 rename
或 prename
命令:
rename -n 's/\./__swa./' *.c
如果输出看起来没问题,删除 -n
。
使用 Bash 的 parameter expansion ,你可以这样做:
for f in *.c; do
echo mv "$f" "${f%%.c}"__swa.c
done
(当然去掉echo
,如果看起来像就可以了)
但我通常更愿意使用更灵活的 rename
Perl,正如 Cyrus 在回答中所建议的那样。