AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 484930
Accepted
Thorbjørn E. K. Christensen
Thorbjørn E. K. Christensen
Asked: 2018-11-30 06:30:14 +0800 CST2018-11-30 06:30:14 +0800 CST 2018-11-30 06:30:14 +0800 CST

将文件列表移动到位置列表

  • 772

我想同时将多个文件移动到特定的新位置。

说我有以下内容

wrong name  | c.txt | a.txt | b.txt |
Correct name| a.txt | b.txt | c.txt |

然后我想做一些类似的事情

mv ./{a.txt,b.txt,c.txt} ./{b.txt,c.txt,a.txt}

但我得到了错误

files rename
  • 3 3 个回答
  • 54 Views

3 个回答

  • Voted
  1. Kusalananda
    2018-11-30T06:37:42+08:002018-11-30T06:37:42+08:00

    请注意

    mv ./{a.txt,b.txt,c.txt} ./{b.txt,c.txt,a.txt}
    

    扩展到

    mv ./a.txt ./b.txt ./c.txt ./b.txt ./c.txt ./a.txt
    

    在mv调用实用程序之前。由于有两个以上的操作数,并且最后一个操作数不是目录,因此会出现错误。如果最后一个操作数是目录的路径名,这会将所有文件移动到该目录中(您也会因两次指定某些文件而出现一些错误)。

    相反,一次将一个文件移动到一个临时目录中,同时将它们重命名为正确的名称。然后将它们移回去。

    mkdir t
    mv a.txt t/b.txt
    mv b.txt t/c.txt
    mv c.txt t/a.txt
    mv t/*.txt ./
    rmdir t
    

    这没有捷径,该mv实用程序一次只能重命名一个文件。

    • 2
  2. Best Answer
    pLumo
    2018-11-30T07:59:08+08:002018-11-30T07:59:08+08:00

    @Kusalananda 回答的补充:

    您可以使用函数使其通用:

    mv_files() {
    
      local args=("$@")
      local num_args=${#args[@]}
    
      if [ $(bc <<< "$num_args%2") -ne 0 ]; then
    
        echo "Number of arguments must be a multiple of 2."
        return 1
    
      else
    
        num_files=$(bc <<< "$num_args/2")
        tmpdir=$(mktemp -d -p .)
        for (( i=0;i<num_files;i++ )); do
          local n=$(bc <<< "$i+$num_files")
          mv "${args[$i]}" "${tmpdir}/${args[$n]}"
        done
    
        mv ${tmpdir}/* .
        rmdir ${tmpdir}
        echo "Done."
    
      fi
    }
    

    然后你像这样运行它:

    mv_files a.txt b.txt c.txt b.txt c.txt a.txt
    

    或者像你那样做:

    mv_files ./{a.txt,b.txt,c.txt} ./{b.txt,c.txt,a.txt}
    

    或者

    old=( a.txt b.txt c.txt )
    new=( b.txt c.txt a.txt )
    
    mv_files "${old[@]}" "${new[@]}" 
    
    • 1
  3. Praveen Kumar BS
    2018-11-30T08:48:30+08:002018-11-30T08:48:30+08:00
    Tried by below method
    
    aveen_linux_example ~]#  sed -n '/wrong name/p' filename | sed "s/|//g" | sed "s/ /\n/g"| sed '/^$/d'|awk '$1 !~  /wrong/ && $1 !~/name/{print $0}' > final.txt
    [root@praveen_linux_example ~]# sed -n '/Correct name/p' filename| sed "s/|//g" |sed -r "s/\s+/\n/g"| sed '/^$/d'| awk '$1 !~/Correct/ && $1 !~/name/{print $0}' >final_2.txt
    
    
    paste final.txt final_2.txt | awk '{print "mv" " " $1 " "  $2}'| sh
    
    • 0

相关问题

  • Krename:如何为每个文件夹重新编号?

  • 如何提前知道 .zip 内部是否有父目录

  • 如何找到特定的文件类型并将它们 tar?

  • du/df 和 ls 报告不同的磁盘使用情况

  • 根据其中的值批量重命名(附加)CSV 文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve