这是一个坏主意(文件名中包含奇怪的字符),但是您可以
mv somefile.txt "foo
bar"
(您也可能已经完成mv somefile.txt "$(printf "foo\nbar")"
或mv somefile.txt foo$'\n'bar
,等等。。。细节是特定于您的shell的。我正在使用zsh
)
阅读有关globing的更多信息,例如glob(7)。详细信息可能是特定于外壳的。但是请理解,这/bin/mv
是通过execve(2)(由您的Shell给出)的,它是一个扩展的参数数组:参数扩展和globlob是调用shell的责任。
您甚至可以编写一个小型C程序来执行以下操作:
#include <stdio.h>
#include <stdlib.h>
int main() {
if (rename ("somefile.txt", "foo\nbar")) {
perror("rename somefile.txt");
exit(EXIT_FAILURE);
};
return 0;
}
将以上程序保存在中foo.c
,gcc -Wall foo.c -o foo
然后编译运行./foo
同样,您可以在Perl,Ruby,Python,Ocaml等中编写类似的脚本。
但这是一个坏主意。避免在文件名中使用换行符(这会使用户感到困惑,并可能破坏许多脚本)。
实际上,我什至建议 在文件路径中仅使用非强调字母,数字和+-/._%
字符(/
作为目录分隔符)。“隐藏”文件(以开头.
)应谨慎使用。我相信在文件名中使用任何类型的空格都是错误的。请使用下划线(例如foo/bar_bee1.txt
)或减号(例如foo/bar-bee1.txt
)