Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将文件拆分到新文件夹中_Linux_Shell_Split - Fatal编程技术网

Linux 将文件拆分到新文件夹中

Linux 将文件拆分到新文件夹中,linux,shell,split,Linux,Shell,Split,我正在写我的第一个剧本,所以请原谅我初学者的错误。我一直在寻找所有的堆栈溢出,并没有找到任何帮助我解决这个问题 该脚本将使用WinSCP访问Raspberry Pi中的文件夹,并分割一个变得过大的文件。然后,它将再次使用WinSCP将子文件复制到桌面。我们知道如何分割文件以及如何将内容移动到WinSCP,但由于我们无法控制子文件名,因此我们认为将它们存储在文件夹中并将其移动更有意义 这就是我迄今为止所做的: #!/bin/bash # Data Collector Script mkdir $o

我正在写我的第一个剧本,所以请原谅我初学者的错误。我一直在寻找所有的堆栈溢出,并没有找到任何帮助我解决这个问题

该脚本将使用WinSCP访问Raspberry Pi中的文件夹,并分割一个变得过大的文件。然后,它将再次使用WinSCP将子文件复制到桌面。我们知道如何分割文件以及如何将内容移动到WinSCP,但由于我们无法控制子文件名,因此我们认为将它们存储在文件夹中并将其移动更有意义

这就是我迄今为止所做的:

#!/bin/bash
# Data Collector Script
mkdir $output
mv split -l 20000 helloworld.txt output //This is the line where I get stuck
有没有一种方法可以直接将文件拆分为输出文件?我会手动移动它们,但文件名是随机的

试试这个:

split -l 20000 helloworld.txt output/x

参考资料:

@Rob找到了答案,下面是一个使用它的小脚本,它试图抵御BASH作为编程语言的缺陷:

#!/bin/bash

# make BASH fail on errors and unset variables
set -eu

output='output_dir'
file_to_split="helloworld.txt"

# make the directory
# -p means no errors if the directory is there already
mkdir -p "${output}"

split -l 20000 "${file_to_split}" "${output}/${file_to_split}."

x代表什么?我查看了您提供的参考,不明白它来自何处。
output/x
是所创建文件的前缀。因此,这些文件将被命名为
output/xaa
output/xab
output/xac
,等等。只要它开始
output/
,就可以随意更改为任何方便的值。