gpt4 book ai didi

linux - 从具有路径的日志文件将文件恢复到其原始位置

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:48 27 4
gpt4 key购买 nike

我已经制作了 1 个脚本来将用户指定的文件移动到垃圾箱并使用其原始路径创建一个日志文件。现在我想创建一个脚本,用户只需输入文件名即可将其恢复到之前的位置,但我无法弄清楚。这是到目前为止的代码:

删除脚本:

#!/bin/sh
#checks if the user has entered anything.
#if not displays message.
if [ $# -eq 0 ]; then #reads the number of characters
echo "Usage: del <pathname>" >&2
exit 2;
fi
#location of the dustbin
dustbin="$HOME/dustbin"
paths="$HOME/Paths"
if [[ ! -d $dustbin ]]; then #checks if the dustbin exists
mkdir $dustbin
else
[[ -p $dustbin ]] #if dustbin exists does nothing
fi
#creates a Paths folder to store the original location of file(s)
if [[ ! -d $paths ]]; then #checks if the Paths folder exists
mkdir $paths
else
[[ -p $paths ]] #if Paths folder exists does nothing
fi
#gets just the file name
for file in "$@"; do #reads all the arguments
if [[ -e $file ]]; then #checks if the file name exists
#moves the file(s) to the dustbin and writes the orginal file path to the paths.txt file.
find $file >> $HOME/Paths/paths.txt && mv "$file" "$dustbin"
echo "Deleting file(s) $file"
else
echo "The file $file doesn't exist."
fi
done

恢复脚本:有了这个,我需要在垃圾箱中搜索文件,将文件名与具有文件原始路径的路径文本文件匹配,然后移动到所述路径。

#!/bin/sh
#checks if the user has entered anything.
#if not displays message.
if [ $# -eq 0 ]; then
echo "Usage: restore <File name>" >&2
exit 2;
fi

#checks if the file paths.txt exist
paths="$HOME/Paths/paths.txt"
if [[ ! -f $paths ]]; then #checks if the Paths file exists
echo "The log file paths.txt doesn't exist. Nothing to restore"
fi

#takes the user input checks if the dustbin exists.
for file in "$@"; do
if [[ ! -d dustbin ]]; then
echo "dustbin doesn't exist"
else
cd $HOME/dustbin
fi

#looks for the user specified file.
if [[ ! -e $file ]]; then
echo "File $file doesn't exist"
else
#restores the file to the original location
restore="grep -n '$file' $paths" #no idea how to do it
mv $file $restore
fi
done

这部分我不知道该怎么做。我需要它从 paths.txt 中读取 $file 中的用户输入,并使用该存储路径将 $file 从垃圾箱移动到存储在 paths.txt 文件中的文件路径。

#restores the file to the original location
restore="grep -n '$file' $paths" #no idea how to do it
mv $file $restore

最佳答案

因此,我认为您需要将文件移回原来使用的位置 mv .

mv "dustbinPath/$file" "orginalPath/$file"

这会将其从垃圾箱路径移动到原始路径。

编辑:

如果你想为它grep路径文件,你可以为命令的输出设置一个变量,比如:

originalPath=$(grep 'what_to_grep' file_to_grep.txt)

在你这样做之后,在上面的 mv 中适本地使用它(无论文本文件是否包含该文件名)将它移出。

您可以阅读更多有关将变量设置为命令输出的信息 here .但是,如果有多条线路有它,您可能会遇到问题。

关于linux - 从具有路径的日志文件将文件恢复到其原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40808233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com