我的〜/ .bashrc
中有以下别名alias del="mv -t ~/.trash"
这会将文件或目录移动到〜/ .trash文件夹。但是,如果我执行以下操作:
del test.txt
touch test.txt
del test.txt
第二个del
调用会覆盖〜/ .trash中已存在的文件test.txt,因此我丢失了备份。这当然是不受欢迎的行为。我正在寻找一种方法来调整我的别名,以便移动到〜/ .trash的文件附加了移动到那里的时刻的日期和时间,从而产生唯一的文件名。有人知道如何做到这一点吗?我正在寻找一种简单的方法来调整别名,而不是广泛的bash脚本。
答案 0 :(得分:5)
您可以使用某项功能。建议使用函数而不是别名。
function del {
local F
for F; do
mv -- "$F" ~/.trash/"$F-$(exec date '+%F-%T')"
done
}
将其放在.bashrc
中,并确保.bash_profile
来源 .bashrc
。
有关您可以使用的其他格式,请参阅date manual(man date
)。
答案 1 :(得分:1)
使用mktemp --tmpdir
。
$ alias del="mv -t \$(mktemp -d --tmpdir=$(echo ~)/.trash)"
$ touch test
$ del test
$ find ~/.trash
/home/username/.trash
/home/username/.trash/tmp.hJQTaEAx6Q
/home/username/.trash/tmp.hJQTaEAx6Q/test
答案 2 :(得分:-1)
我认为我制作迷你剧本而不是别名
#!/bin/bash
DATE=$(date +%Y_%m_%d_%H_%M_%S)
for file; do
mv "${file}" "${HOME}/.trash/${DATE}_${file}"
done
您可以在垃圾箱中创建文件名之前的日期(但是您将松开扩展程序 - 虽然这也可以修复)。
如果您坚持可以在日期戳中添加纳秒,则不要在同一第二 :)上多次使用该脚本相同的文件名。