我正在尝试从不同的文件夹复制多个文件,并将它们粘贴到具有新文件名的新文件夹中。有人能帮我吗?例如:我有文件夹 1、2、3、4、5,每个文件夹都有 filex.txt。我希望从每个文件夹中取出 file.txt,并将其重命名为 1filex、2filex、3filex、4filex、5filex,并将其新位置重命名为 folderabc。
任何帮助将不胜感激。
谢谢
答案1
您的问题可以分解为几个步骤。
- 如果目标目录不存在,则创建它
- 将名为 filex.txt 的文件从目录 1 复制到目标
- 对目录 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
一旦您确认它正在做正确的事情,就将其删除。