Geo*_*ley 4 linux shell scripting batch-rename
我想编写一个linux脚本,将所有文件移动或复制到具有相同文件名(但扩展名不同)的文件到所有这些文件的新文件名,同时保持不同的扩展名.换一种说法:
如果我从目录列表开始:
file1.txt, file1.jpg, file1.doc, file12.txt, file12.jpg, file12.doc
我想编写一个脚本来更改所有文件名而不更改扩展名.对于相同的示例,选择file2作为新文件名,结果将是:
file2.txt, file2.jpg and file2.doc, file12.txt, file12.jpg, file12.doc
因此,不会更改其文件名与当前条件不匹配的文件.
最好的祝愿,
乔治
注意:如果存在file1.doc变量i,则表达式${i##*.}提取扩展名,即doc在这种情况下.
一线解决方案:
for i in file1.*; do mv "$i" "file2.${i##*.}"; done
Run Code Online (Sandbox Code Playgroud)
脚本:
#!/bin/sh
# first argument - basename of files to be moved
# second arguments - basename of destination files
if [ $# -ne 2 ]; then
echo "Two arguments required."
exit;
fi
for i in $1.*; do
if [ -e "$i" ]; then
mv "$i" "$2.${i##*.}"
echo "$i to $2.${i##*.}";
fi
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6797 次 |
| 最近记录: |