【问题标题】:Find all matching files and renaming in bash shell在 bash shell 中查找所有匹配的文件并重命名
【发布时间】:2018-09-14 00:14:41
【问题描述】:

基本上,我会在文件末尾添加一个临时的~,以了解我已经接触过它们。所以它们看起来像file.txt~。如果它使我的下一步更容易将它们重命名为file.txt.old,我总是可以更改扩展名。

我的方法是做一个find directory -name '*~',而不是管道到mv。我只是不确定如何处理~

任何指针都将不胜感激

【问题讨论】:

  • find <dir> -iname '*~'?它适用于我的机器。
  • 是的,我知道它有效,但我需要删除 ~ 并添加 .old
  • Eops 对不起,我认为问题在于您的 find 命令中缺少 -iname

标签: bash file find mv


【解决方案1】:
find -name '*~' | while read file
do 
    mv -v $file $(echo $file | sed 's@\(.*\)~@\1.old@')
done

【讨论】:

  • 这就像一个魅力。我忘了sed。你能解释一下这是如何工作的吗?我没有得到整个反斜杠和 1s 的东西。抱歉,我是 bash shell 脚本的新手
  • 当然,我将输出从find 传送到while。然后我使用read 输入到名为file 的变量中。要删除~,我使用一个将$file 回显到sed 的子shell。 sed 通过使用back references 捕获~ 之前的内容来删除~。然后,我在替换中使用捕获的文本,连接.old;此输出用于mv
  • 太棒了!感谢您的解释和帮助我。非常感谢
猜你喜欢
  • 2019-09-02
  • 2014-02-18
  • 2017-07-24
  • 2021-09-20
  • 2016-08-10
  • 1970-01-01
  • 2013-11-21
  • 2013-02-07
  • 2015-05-09
相关资源
最近更新 更多