我需要将文件移动到以参数命名的目录。
到目前为止,我一直致力于如何将文件移动到目录。
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
包含不存在的子目录路径,则会创建完整路径(通过添加-p
对mkdir
; 的调用,这也使mkdir
不是如果路径已存在则失败)。我还在路径前加上前缀--
万一中的第一个字符$3
是 a -
(否则这会混淆mkdir
;--
表示命令行选项的结束)。如果调用失败,我也会以非零退出状态退出mkdir
。