我有一个程序可以生成一堆文件。我希望将该程序生成的文件移至子目录中。我正在寻找 shell 脚本编写的想法,而不是mv
为每个文件使用 using 语句的基本方法。
答案1
程序写入文件的地方是该程序的实现,通常不受 shell 的影响。但这里有一些想法:
- 如果程序在 stdout 上生成内容,您可以使用
>
运算符将这些内容存储在另一个位置。例子:
myprogram > /path/to/subdir/file
- 该程序可能有命令行选项,因此您可以定义输出的位置。在本例中,我将其编译
main.c
并prog
没有将其存储在当前工作目录中,而是要求将其发送到./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;
}
您可以看到输出文件是硬编码的路径。外壳无法影响这一点。