在bash问题中回收站

时间:2011-06-15 11:19:45

标签: bash

我需要使用bash制作回收站代码。这是我到目前为止所做的。我的问题是,当我将具有相同名称的文件移动到垃圾文件夹时,它只会覆盖以前的文件。你能否就如何处理这个问题给我任何建议?

#!/bin/bash

mkdir -p "$HOME/Trash"
if [ $1 = -restore ]; then
    while read file; do
    mv $HOME/Trash/$2 /$file
    done < try.txt
else
    if [ $1 = -restoreall ]; then
        mv $HOME/Trash/* /$PWD
    else
        if [ $1 = -empty ]; then
            rm -rfv /$HOME/Trash/*
        else
            mv $PWD/"$1"/$HOME/Trash
            echo -n "$PWD" >> /$HOME/Bash/try
        fi
    fi
fi

4 个答案:

答案 0 :(得分:2)

您可以将删除时间的时间戳附加到“废纸篓”文件夹中的文件名中。恢复后,你可以再次关闭它。

答案 1 :(得分:2)

要为文件添加时间戳,请使用以下内容:

DT=$(date +'%Y%m%d-%H%M%S')
mv $PWD/"$1" "/$HOME/Trash/${1}.${DT}"

例如,移动initrd.img-2.6.28-11-generic.20110615-140159时会创建initrd.img-2.6.28-11-generic这样的文件。

要获取原始文件名,请从最后一个点开始删除所有内容,例如:

NAME_WITHOUT_TIMESTAMP=${file%.*-*}

在百分比char之后,模式位于右侧。 (.*也足以匹配。)

答案 2 :(得分:0)

看看trash-cli是如何做到的。它是用Python编写的,并使用与桌面环境相同的垃圾箱。 Trash-cli至少可以在大型Linux发行版中使用。

http://code.google.com/p/trash-cli/

答案 3 :(得分:-1)

可能最简单的事情就是在调用mv时添加-i。这将提示用户是否要更换。如果您碰巧有权访问gnu cp(例如,在Linux上),您可以使用cp --backup而不是mv。