我有大量x00000.jpg
,X00000.jpg
和xx00000.jpg
格式的文件。
如何重命名这些文件,使它们全部为大写,忽略名称的数字部分?
答案 0 :(得分:21)
for f in * ; do mv -- "$f" "$(tr [:lower:] [:upper:] <<< "$f")" ; done
答案 1 :(得分:12)
您无法仅从Bash重命名文件,因为Bash没有任何用于重命名文件的内置命令。你必须至少使用一个外部命令。
如果允许Perl:
perl -e 'for(@ARGV){rename$_,uc}' *.jpg
如果允许Python:
python -c 'import os, sys; [os.rename(a, a.upper()) for a in sys.argv[1:]]' *.jpg
如果您有数千或更多文件,上面的解决方案很快,下面的解决方案明显变慢。
如果允许AWK,ls
和mv
:
# Insecure if the filenames contain an apostrophe or newline!
eval "$(ls -- *.jpg | awk '{print"mv -- \x27"$0"\x27 \x27"toupper($0)"\x27"}')"
如果您有大量文件,则上述解决方案不起作用,因为*.jpg
扩展为太长的参数列表(错误:参数列表太长)。
如果允许tr
和mv
,请参阅damienfrancois的回答。
如果允许mv
:
for file in *; do mv -- "$file" "${file^^}"; done
请注意,这些会在最后将.jpg
重命名为.JPG
,但您可以修改它们以避免这种情况。
答案 2 :(得分:8)
bash
shell具有将变量名称转换为全部大写的语法。
for file in * ; do # or *.jpg, or x*.jpg, or whatever
mv $file ${file^^}
done
我认为这可能是一个相当新的功能,因此请首先验证您的bash
版本是否实现了它。为避免错误,请在mv
替换echo mv
之后尝试,以确保它能够满足您的需求。
此功能的文档为here,或键入info bash
并搜索“upper”。
如果目标文件已存在(例如,如果x00000.jpg
和X00000.JPG
已经存在),您应该决定该怎么做,除非您确定它不是问题。要检测此类名称冲突,您可以尝试:
ls *.txt | tr '[a-z]' '[A-Z]' | sort | uniq -c | sort -n
并查找不以1
开头的任何行。
答案 3 :(得分:7)
结合以前的答案可以产生:
for file in * ; do # or *.jpg, or x*.jpg, or whatever
basename=$(tr '[:lower:]' '[:upper:]' <<< "${file%.*}")
newname="$basename.${file#*.}"
mv "$file" "$newname"
done
答案 4 :(得分:3)
使用tr:
f="x00000.jpg"
n="${f%.*}"
n=$(tr '[:lower:]' '[:upper:]' <<< "$n")
f="$n.${f#*.}"
echo "$f"
<强>输出:强>
X00000.jpg
答案 5 :(得分:2)
rename
最简单的方法可能是rename 'y/a-z/A-Z/' *
多个文件。要将小写字母转换为高位,您可以
const mysql = require('mysql');
const express = require('express');
const app = express();
const connection = mysql.createConnection({
host: 'localhost',
user: 'me',
password: 'secret',
database: 'my_db'
});
connection.connect();
app.get('/', (req, res) => {
connection.query(`SELECT * FROM table`, (error, data) => {
if(error) {
console.log(error)
}else{
res.json(data)
}
});
});
app.post('/update/user/:id?', (req, res) => {
const id = req.params.id;
const username = req.body.username;
connection.query(`UPDATE MyGuests SET username='${username}' WHERE id=${id}`, (error, data) => {
if(error) {
console.log(error)
}else{
res.json(data)
}
});
});
答案 6 :(得分:0)