我有 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
它们。