Jim6834 Asked: 2019-10-21 04:01:29 +0800 CST2019-10-21 04:01:29 +0800 CST 2019-10-21 04:01:29 +0800 CST 在目录中创建文件的函数 772 我有 4 个目录:dir1 dir2 dir3 dir4。我想在每个目录中创建一个文件。我知道我可以这样做:触摸 file1.txt,然后将其移至 dir1,然后触摸 file2.txt,然后将其移至 dir2,但这需要很长时间。如何创建一个在每个目录中创建文本文件的函数?谢谢 directory files functions 2 个回答 Voted Best Answer steeldriver 2019-10-21T06:12:23+08:002019-10-21T06:12:23+08:00 您无需创建然后移动文件 - 您可以touch将它们放在原位。 touch dir1/file1.txt dir2/file2.txt dir3/file3.txt 它不会真正为您节省任何时间(或打字),但您当然可以为此创建一个 shell 函数 - 一个最小的实现是 mkfile() { touch "$1"/"$2"; } 您可以调用它 mkfile dir1 file1.txt 虽然它当然应该包括一些检查/错误处理(例如如果$1不是目录或不存在该怎么办)。 如果您的文件和目录结构始终采用这种形式,dirN/fileN.txt那么有一些更好的方法可以自动创建,例如 seq 1 3 | xargs -I{} touch dir{}/file{}.txt 甚至(使用 GNUparallel和大括号扩展) parallel touch dir{}/file{}.txt ::: {1..3} Hamish 2019-10-21T04:16:28+08:002019-10-21T04:16:28+08:00 不知道你认为什么是“年龄”。没有任何功能可以为您并行创建 4 个文件。假设您使用 bash 或类似的“最简单”的方式可能是一个循环。例如: DIR=dir for i in 1 2 3 4 do touch "${DIR}i" done 这在我使用的任何机器上都非常快。如果你想创建一个原子 4 文件,恐怕没有真正的方法可以做到这一点。 请注意,如果 4 个文件中有内容,就出现第一个文件和最后一个文件之间的延迟而言,“最快”的方式是在其他地方创建文件,然后再创建mv它们。
您无需创建然后移动文件 - 您可以
touch
将它们放在原位。它不会真正为您节省任何时间(或打字),但您当然可以为此创建一个 shell 函数 - 一个最小的实现是
您可以调用它
虽然它当然应该包括一些检查/错误处理(例如如果
$1
不是目录或不存在该怎么办)。如果您的文件和目录结构始终采用这种形式,
dirN/fileN.txt
那么有一些更好的方法可以自动创建,例如甚至(使用 GNU
parallel
和大括号扩展)不知道你认为什么是“年龄”。没有任何功能可以为您并行创建 4 个文件。假设您使用 bash 或类似的“最简单”的方式可能是一个循环。例如:
这在我使用的任何机器上都非常快。如果你想创建一个原子 4 文件,恐怕没有真正的方法可以做到这一点。
请注意,如果 4 个文件中有内容,就出现第一个文件和最后一个文件之间的延迟而言,“最快”的方式是在其他地方创建文件,然后再创建
mv
它们。