使用 shell 脚本将程序生成的输出文件移动到特定目录

使用 shell 脚本将程序生成的输出文件移动到特定目录

我有一个程序可以生成一堆文件。我希望将该程序生成的文件移至子目录中。我正在寻找 shell 脚本编写的想法,而不是mv为每个文件使用 using 语句的基本方法。

答案1

程序写入文件的地方是该程序的实现,通常不受 shell 的影响。但这里有一些想法:

  • 如果程序在 stdout 上生成内容,您可以使用>运算符将​​这些内容存储在另一个位置。例子:
myprogram > /path/to/subdir/file
  • 该程序可能有命令行选项,因此您可以定义输出的位置。在本例中,我将其编译main.cprog没有将其存储在当前工作目录中,而是要求将其发送到./subdir/
$ gcc main.c -o ./subdir/prog
  • 如果程序始终写入当前工作目录,您可以从目标位置运行该程序。以下与前面的示例类似,但从./subdir/.在这种情况下,您可以运行:
$ gcc ../main.c -o prog

对于 Windows 应用程序或刚接触 Linux 的人编写的程序来说,依赖与 相关的资源是很常见的.,但通常在 Linux 应用程序上这不是问题。如果程序写入.并且不依赖于相对于 的资源.,则从您感兴趣的目录运行它。如果它不在,$PATH您可能需要指定二进制文件的完整路径。


输出文件的位置实际上并不是 shell 的功能。这是您正在运行的功能的函数。举个例子,如果我编写一个简单的 C 程序,将“Hello”写入日志文件:

#include <stdio.h>
int main ()
{
   FILE * fp = fopen ("/var/log/mylog","w");
   fprintf (fp, "Hello\n");
   fclose (fp);
   return 0;
}

您可以看到输出文件是硬编码的路径。外壳无法影响这一点。

相关内容