【发布时间】:2021-04-02 21:02:31
【问题描述】:
我有一个带有数字前缀的文件列表,例如 1-filename.txt 2-filename.txt ..so on 。我发现我跳过了一个文件名 45-filename.txt 。我在那个目录中有从1-filename.txt 到100-filename.txt 的文件。现在我想通过创建一个 bash 脚本重新排列所有带有数字前缀的文件而不会丢失它们的实际名称(例如 filename.txt),但没有这样做。我创建的脚本如下。
#!/bin/bash
n=1
for i in *.txt;
do
file=$(ls -v "$i" | awk -F- ' { print $NF }')
mv $i "$n-${file}"
let n=n+1
done
但我没有得到所需的输出。
注意文件名称中有空格,例如:1-my first file.txt 2-my second file.txt ....等等。
【问题讨论】:
-
ls -v "$i"?只是echo "$i"。note files have spaces in its name然后引用它。mv "$i" -
不清楚您要达到的目标。从你的代码来看,你每次都用 mv 命令覆盖一个文件,因为 n 永远不会改变?
-
第一
let n=n+1 -
只需将 100-filename.txt 移动到 45-filename.txt?
-
@RamanSailopal 我正在尝试通过删除以前的数字前缀并再次添加相同的前缀来重写他们的文件名,因为错误地跳过了一个数字。
标签: bash shell file-rename file-manipulation