当前位置: 首页 > 面试题库 >

Linux Shell脚本在文件名中添加前导零

东门清夷
2023-03-14
问题内容

我有一个约有1,700个文件的文件夹。它们都被命名为like 1.txt1497.txt,等等。我想重命名所有文件,以便所有文件名均为四位数。

即,23.txt成为0023.txt

什么是可以执行此操作的shell脚本?或一个相关的问题:如何使用grep只匹配包含以下内容的行\d.txt(即一位数字,然后是一个句点,然后是字母txt)?

这是我到目前为止的内容:

for a in [command i need help with]
do
  mv $a 000$a
done

基本上,运行该命令3次,并在其中使用命令查找一位数字,两位数字和三位数字的文件名(更改了初始零的数目)。


问题答案:

尝试:

for a in [0-9]*.txt; do
    mv $a `printf %04d.%s ${a%.*} ${a##*.}`
done

[0-9]*.txt根据需要更改文件名模式()。

通用枚举重命名,不对初始文件名集做任何假设:

X=1;
for i in *.txt; do
  mv $i $(printf %04d.%s ${X%.*} ${i##*.})
  let X="$X+1"
done


 类似资料:
  • 问题内容: 我想在现有的CSV文件中添加一行标题,并在适当位置进行编辑。我怎样才能做到这一点? 我想结束 更改初始CSV输出不方便。 任何标准命令都可以。重要的是,文件已就地编辑,并且该行插入到文件的开头。 问题答案: 这将在文件的开头添加自定义文本:

  • 问题内容: 如果我有PHP脚本,如何从该脚本内部获取文件名? 另外,给定表单脚本的名称,我如何仅提取“ jquery.js”部分? 问题答案: 只需使用PHP魔术常数 即可获取当前文件名。 但是似乎您想要没有的部分。所以… 一个更通用的文件扩展名去除器如下所示… 如您所料,使用标准的字符串库函数要快得多。

  • 我只希望收到的电子邮件在发件人电子邮件地址之前显示发件人姓名,如下所示:sender_name

  • 问题内容: 假设您有一个文件 并希望添加一些标头信息,例如 如何添加此“标题”?手动执行似乎很简单。点击几回车,复制/粘贴或写信息,就可以了。当然,在R中,我可以读入,创建,添加标题信息,然后。 我想知道是否还有另一种从“顶部”附加文件的方法。也欢迎使用其他解决方案(来自c ++或Java …)(我很好奇其他语言如何解决此问题)。 问题答案: 在R中,不需要使用额外的文件。您可以这样做: 但是,使

  • 我有一些火花代码来处理csv文件。它对其进行一些转换。我现在想将此RDD保存为csv文件并添加一个标头。此RDD的每一行都已正确格式化。 我不知道怎么做。我想用头字符串和我的RDD进行联合,但头字符串不是RDD,因此无法工作。

  • 我在不同的文件夹中动态创建文件,像这样: 这给了我: 但由于我正在许多文件夹中创建同名文件,因此我希望通过添加文件夹名称作为前缀来区分它们,以获得: 我怎么能得到这个?