在目录中创建文件的函数

在目录中创建文件的函数

我有 4 个目录:dir1 dir2 dir3 dir4。我想在每个目录中创建一个文件。我知道我可以这样做:touch file1.txt 然后将其移动到 dir1,然后 touch file2.txt 然后将其移动到 dir2,但这需要很长时间。我如何创建一个在每个目录中创建一个文本文件的函数?谢谢

答案1

您不需要创建然后移动文件 - 您可以将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}

答案2

不确定你认为什么是“年龄”。没有函数可以为你并行创建 4 个文件。假设你使用 bash 或类似程序,最“简单”的方法可能是循环。例如:

DIR=dir
for i in 1 2 3 4
do
  touch "${DIR}i"
done

在我使用的任何机器上,这都相当快。如果你想创建一个原子 4 文件,恐怕没有真正的方法可以做到这一点。

请注意,如果这 4 个文件中都有内容,那么就第一个文件和最后一个文件出现的滞后而言,“最快”的方法是在其他地方创建文件,然后再创建mv它们。

相关内容