https://serverfault.com/questions/70939/how-to-replace-a-text-string-in-multiple-files-in-linux
https://serverfault.com/questions/228733/how-to-rename-multiple-files-by-replacing-word-in-file-name
https://serverfault.com/questions/212153/replace-string-in-files-with-certain-file-extension
https://serverfault.com/questions/33158/searching-a-number-of-files-for-a-string-in-linux
上面提到的这些文章都回答了我的问题。然而,它们都不适合我。我怀疑这是因为我试图替换的字符串中有一个 # 。有没有特殊的方法来解决这个问题?
我有一个图像文件,在站点迁移期间将 é 替换为 #U00a9。这些看起来像这样:
Lucky-#U00a9NBC-80x60.jpg
Lucky-#U00a9NBC-125x125.jpg
Lucky-#U00a9NBC-150x150.jpg
Lucky-#U00a9NBC-250x250.jpg
Lucky-#U00a9NBC-282x232.jpg
Lucky-#U00a9NBC-300x150.jpg
Lucky-#U00a9NBC-300x200.jpg
Lucky-#U00a9NBC-300x250.jpg
Lucky-#U00a9NBC-360x240.jpg
Lucky-#U00a9NBC-400x250.jpg
Lucky-#U00a9NBC-430x270.jpg
Lucky-#U00a9NBC-480x240.jpg
Lucky-#U00a9NBC-600x240.jpg
Lucky-#U00a9NBC-600x250.jpg
Lucky-#U00a9NBC.jpg
Run Code Online (Sandbox Code Playgroud)
我想把它改成这样:
Lucky-safeNBC-80x60.jpg
Lucky-safeNBC-125x125.jpg
Lucky-safeNBC-150x150.jpg
Lucky-safeNBC-250x250.jpg
Lucky-safeNBC-282x232.jpg
Lucky-safeNBC-300x150.jpg
Lucky-safeNBC-300x200.jpg
Lucky-safeNBC-300x250.jpg
Lucky-safeNBC-360x240.jpg
Lucky-safeNBC-400x250.jpg
Lucky-safeNBC-430x270.jpg
Lucky-safeNBC-480x240.jpg
Lucky-safeNBC-600x240.jpg
Lucky-safeNBC-600x250.jpg
Lucky-safeNBC.jpg
Run Code Online (Sandbox Code Playgroud)
更新:
这些示例都以“LU00a9ucky”开头,但这里有许多名称不同的图像。我只是将字符串的“#U00a9”部分定位为“safe”。
我有目录说它/var/tmp/abc
有 4 个文件:
12345-ram-3e3r5-io9490-89adu9.csv
45434-dam-qwe35-to9490-43adu9.csv
11234-cam-yy3r5-ro9490-85adu9.csv
14423-sam-hh3r5-uo9490-869du9.csv
Run Code Online (Sandbox Code Playgroud)
我想以尽可能短的(可能是单行)方式重命名所有 CSV 文件(找到所有文件并重命名它们):
XXXXX-ram-3e3r5-io9490-89adu9.csv
XXXXX-dam-qwe35-to9490-43adu9.csv
XXXXX-cam-yy3r5-ro9490-85adu9.csv
XXXXX-sam-hh3r5-uo9490-869du9.csv
Run Code Online (Sandbox Code Playgroud) 在 CentOS 上,rename 命令使用两个简单的字符串,from
以及to
.
rename from to file...
Run Code Online (Sandbox Code Playgroud)
而在 Debian/Ubuntu 上,它使用 perl 风格的正则表达式。
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
Run Code Online (Sandbox Code Playgroud)
为什么此实用程序因分布而异?是否有关于哪些发行版发布或默认使用该实用程序的哪些版本的参考?
我正在使用此命令重命名文件:
for fname in *;
do
mv "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ')
done
Run Code Online (Sandbox Code Playgroud)
但它只在当前目录中重命名。假设我有很多目录,每个目录包含一些其他目录,最后一个目录树包含文件。我想用随机字符重命名它们。
我认为find . -type f
应该可以工作,并且已经尝试过,但仍然没有得到任何工作命令。
我有一组这样的图像:
01-12_13:20:12_1366x768.png 01-12_13:20:46_1366x768.png 01-12_13:21:01_1366x768.png 01-12_13:21:06_1366x768.png
01-12_13:20:40_1366x768.png 01-12_13:20:47_1366x768.png 01-12_13:21:02_1366x768.png 01-12_13:21:07_1366x768.png
01-12_13:20:42_1366x768.png 01-12_13:20:49_1366x768.png 01-12_13:21:03_1366x768.png 01-12_13:21:08_1366x768.png
01-12_13:20:44_1366x768.png 01-12_13:20:59_1366x768.png 01-12_13:21:04_1366x768.png 01-12_13:21:10_1366x768.png
01-12_13:20:45_1366x768.png 01-12_13:21:00_1366x768.png 01-12_13:21:05_1366x768.png
Run Code Online (Sandbox Code Playgroud)
我需要将每个替换:
为_
. 我怎样才能使用 bash 命令做到这一点?
(note : i love when everything is compact and one-lined)