我需要使用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
答案 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发行版中使用。
答案 3 :(得分:-1)
可能最简单的事情就是在调用mv时添加-i。这将提示用户是否要更换。如果您碰巧有权访问gnu cp(例如,在Linux上),您可以使用cp --backup而不是mv。