【问题标题】:Bash - Moving files using destination from txt fileBash - 使用 txt 文件中的目标移动文件
【发布时间】:2016-11-24 00:48:03
【问题描述】:

我有一个文本文件 (log.txt),其中包含我希望文件结束的文件路径列表。

/root/NewDir/Testfile.txt
/root/NewDir/Testfile2.txt
/root/NewDir2/Alsoatest.txt
...

文件当前位于与 log.txt 相同的位置

/root/Dustbin/log.txt
/root/Dustbin/Testfile.txt
/root/Dustbin/Testfile2.txt
/root/Dustbin/Alsoatest.txt
...

我正在尝试创建一个脚本,它可以只使用文件名并将指定的文件移动到 log.txt 文件中指定的位置。

例如:

# restore Testfile.txt

结果应该是 Testfile.txt 从 /root/Dustbin/... 移动到 /root/NewDir/...

我是 bash / shellscript 的新手,我已经尝试研究了好几个小时,但完全被难住了! 我知道我需要使用“mv”功能,但不确定如何通过匹配文件名来使用 log.txt 文件中指定的内容填充目标!

有没有人有任何想法或能够指出我正确的方向?

【问题讨论】:

  • 所以,不存在编写您的代码,这个问题可能会让您朝着正确的方向开始 superuser.com/questions/538306/… 以及 basename 函数。如果您遇到问题,请将有问题的代码添加到此问题中,我们会提供帮助
  • 循环通过log.txt 并在每个文件名上调用basename,这将返回不带目录的文件名。如果这与您尝试恢复的名称匹配,则使用文件名作为mv 的目标。
  • 除了尝试搜索类似已回答问题和研究mv 的其他建议外,请查看mmv 并重命名。

标签: bash shell mv


【解决方案1】:

尝试:

#!/bin/bash 

dustbin="/root/Dustbin"
file="$1"

mv $dustbin/$file $(grep "/$file$" $dustbin/log.txt)

根据您的要求,您可以改进脚本,在“mv”之前添加一个“mkdir”,...。

【讨论】:

  • 谢谢你这帮助我指明了正确的方向,让我的脚本更接近我想要的方式
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多