【问题标题】:Copy files to their corresponding destination folders将文件复制到其相应的目标文件夹
【发布时间】:2021-10-27 20:36:47
【问题描述】:

我在一个文件夹中有许多具有不同扩展名的文件(.txt.ascii.mat)。我想将它们移动到与文件名相同的目标文件夹。

例如: 我有像a.txt, a.ascii, b.txt, b.ascii, b.mat 这样的文件。 我想先以ab 的名称创建文件夹,然后我想将文件a.txt,a.ascii 移动到文件夹ab.txt,b.ascii,b.mat 到文件夹b

我尝试了如下代码。但是我需要一种自动的方式来制作文件夹并将文件移动到它。

#!/bin/sh
mkdir a b
for file in $(<list.txt)
do
cp "$file" a
done

【问题讨论】:

  • list.txt 中有什么内容?
  • 所有需要复制到目标文件夹的文件我保存为list.txt
  • 为什么?是否有不应复制的文件?
  • 是的,只有一个文件我不想复制
  • 嗯,你试过cp "${file}" "${file%%.*}"而不是cp "$file" a吗?

标签: bash shell for-loop while-loop


【解决方案1】:

似乎这个Bash 脚本可以完成这项工作

#!/usr/bin/env bash
for file in $(<list.txt); do
    dirn="${file%.*}"
    mkdir -p "$dirn"
    cp "$file" "$dirn"
done

【讨论】:

  • 这可能会有所帮助:BashFAQ/001
  • 这将在 tar 存档 (a.tar.gz) 上失败
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2016-03-03
  • 1970-01-01
相关资源
最近更新 更多