将文件移动到〜/ .trash,具有唯一的文件名

时间:2014-08-14 09:56:10

标签: bash

我的〜/ .bashrc

中有以下别名
alias del="mv -t ~/.trash"

这会将文件或目录移动到〜/ .trash文件夹。但是,如果我执行以下操作:

del test.txt
touch test.txt
del test.txt

第二个del调用会覆盖〜/ .trash中已存在的文件test.txt,因此我丢失了备份。这当然是不受欢迎的行为。我正在寻找一种方法来调整我的别名,以便移动到〜/ .trash的文件附加了移动到那里的时刻的日期和时间,从而产生唯一的文件名。有人知道如何做到这一点吗?我正在寻找一种简单的方法来调整别名,而不是广泛的bash脚本。

3 个答案:

答案 0 :(得分:5)

您可以使用某项功能。建议使用函数而不是别名。

function del {
    local F
    for F; do
        mv -- "$F" ~/.trash/"$F-$(exec date '+%F-%T')"
    done
}

将其放在.bashrc中,并确保.bash_profile 来源 .bashrc

有关您可以使用的其他格式,请参阅date manualman 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

您可以在垃圾箱中创建文件名之前的日期(但是您将松开扩展程序 - 虽然这也可以修复)。

如果您坚持可以在日期戳中添加纳秒,则不要在同一第二 :)上多次使用该脚本相同的文件名。