如何将命令创建的文件 mv 到目录

如何将命令创建的文件 mv 到目录

我需要将文件移动到以参数命名的目录。

到目前为止,我一直致力于如何将文件移动到目录。

mkdir "$3"
cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 255 > $(shuf -n 1 /usr/share/dict/french)

到目前为止,这是可行的,但现在我需要将此文件移动到用户在参数中指定的目录$3。我尝试过使用find命令选择几秒钟前创建的文件n,但这实际上效率不高,因为它也可以选择其他文件。

答案1

您正在创建一个名为 from 的目录$3,但您正在当前目录中创建一个文件。

要在新目录中创建文件,只需重定向到该目录中的名称:

mkdir "$3"
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$3/$(shuf -n 1 /usr/share/dict/french)"

或者,为了可读性将内容分开:

dir=$3

mkdir -p -- "$dir" || exit 1

fname=$(shuf -n 1 /usr/share/dict/french)

tr -dc 'A-Za-z0-9' </dev/urandom | head -c 255 >"$dir/$fname"

在这里,我还确保如果$3包含不存在的子目录路径,则会创建完整路径(通过添加-pmkdir; 的调用,这也使mkdir 不是如果路径已存在则失败)。我还在路径前加上前缀-- 万一中的第一个字符$3是 a -(否则这会混淆mkdir;--表示命令行选项的结束)。如果调用失败,我也会以非零退出状态退出mkdir

相关内容