复制和重命名文件

复制和重命名文件

我正在尝试从不同的文件夹复制多个文件,并将它们粘贴到具有新文件名的新文件夹中。有人能帮我吗?例如:我有文件夹 1、2、3、4、5,每个文件夹都有 filex.txt。我希望从每个文件夹中取出 file.txt,并将其重命名为 1filex、2filex、3filex、4filex、5filex,并将其新位置重命名为 folderabc。

任何帮助将不胜感激。

谢谢

答案1

您的问题可以分解为几个步骤。

  1. 如果目标目录不存在,则创建它
  2. 将名为 filex.txt 的文件从目录 1 复制到目标
  3. 对目录 2、3、4 和 5 重复步骤 2。

您可以在一行脚本中执行此操作,但为了更容易理解,您可以将其放入script.sh需要执行工作的目录中命名的文件中。

#!/bin/bash

# A placeholder for our destination directory name
DESTDIR=folderabc

# Make your destination directory if it doesn't exist

if [ ! -d $DESTDIR ]; then
    mkdir $DESTDIR;
fi;


# repeat for directories 1-5
for d in 1 2 3 4 5
do
    # Copy file from computed source to computed destination file
    cp "$d/filex.txt" "$DESTDIR/${d}filex.txt"
done

当您启动时,您的文件将会像这样(使用tree)。

user$ tree
.
├── 1
│   └── filex.txt
├── 2
│   └── filex.txt
├── 3
│   └── filex.txt
├── 4
│   └── filex.txt
├── 5
│   └── filex.txt
└── script.sh

要执行文件,您可以键入bash script.sh。您还可以查看权限等其他内容。

完成后你的文件看起来应该是这样的:

user$ tree
.
├── 1
│   └── filex.txt
├── 2
│   └── filex.txt
├── 3
│   └── filex.txt
├── 4
│   └── filex.txt
├── 5
│   └── filex.txt
├── folderabc
│   ├── 1filex.txt
│   ├── 2filex.txt
│   ├── 3filex.txt
│   ├── 4filex.txt
│   └── 5filex.txt
└── script.sh

答案2

对于您问题中给出的情况,像这样的简单脚本就可以完成:

for d in {1..5}; do echo cp "$d/filex.txt" "folderabc/${d}filex"; done

目标目录folderabc必须存在 - 如果不存在,则先使用 创建它mkdir folderabc

echo一旦您确认它正在做正确的事情,就将其删除。

相关内容