备份编程目录

备份编程目录

我有一个目录,里面有很多我想备份的已编译 C 程序。目前它们有名称,program.out但我想将其改为program

是否仍然可以排除这些?此外,我将使用哪种正则表达式来快速重命名它们?

答案1

要备份代码,请使用 git 或其他版本控制软件。在互联网上,您有很多选择,例如:github、bitbucket。

在 git 中,如果你得到文件 .gitignore,并且在其中添加 *.out,那么它将不会被传输到存储库

答案2

我不太清楚你的第一个问题。如果你想重命名program.outprogram那么只需运行:

mv program{.out,}

/etc对于第二个问题,假设我想获取带有后缀的文件列表:

#!/bin/bash
ls /etc > /tmp/etcfiles
while read line
do
   if [[ $line =~ \..+ ]]; then
      echo $line
   fi
done < /tmp/etcfiles

您可以根据需要调整以上内容。

  • \.与文字句点匹配。
  • .匹配句点后面的任意字符。
  • +表示第一个句点后面必须至少有一个字符。因此这将匹配test.c,但不匹配test.如果您还想匹配test.,则将 更改+*

答案3

如果您使用 bash 作为 shell,这对于 shell 管道来说是一个简单的任务。

ls | grep '\.out$' | while read file; do echo mv "$file" "${file%.*}"; done

ls生成目录中的文件列表。

grep '\.out$'提取以 .out 结尾的文件名并丢弃其余部分。

while read file一次读取一个文件名。

echo mv "$file" "${file%.*}"显示但不运行 mv 命令,该命令会将每个文件重命名为不带扩展名的版本。该${file%.*}业务是用于剥离文件扩展名的 bash 语法。当您对管道在实际运行时能完成您想要的工作感到满意时,删除该echo部分并让它实际运行。

ls | grep '\.out$' | while read file; do mv "$file" "${file%.*}"; done

相关内容