Я пытаюсь скопировать несколько файлов из отдельных папок и вставить их в новую папку с новыми именами файлов. Может ли кто-нибудь помочь мне с тем же? Например: у меня есть папка 1,2,3,4,5, и у каждого из них есть файл x.txt Я хочу взять файл file.txt из каждой папки и переименовать его в 1filex, 2filex, 3filex, 4filex, 5filex и их новое местоположение в folderabc.
Любая помощь будет принята с благодарностью.
Спасибо
Ваша проблема может быть разбита на несколько шагов.
Вы можете сделать это в сценарии из 1 строки, но сделать это проще следовать, вы можете поместить его в файл с именем 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
Когда вы начнете, ваши файлы будут такими (используя дерево )
).
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
Для случая, указанного в вашем вопросе, простой скрипт, подобный этому, будет делать:
for d in {1..5}; do echo cp "$d/filex.txt" "folderabc/${d}filex"; done
Каталог назначения folderabc
должен существовать - если его нет, то сначала создайте его с помощью mkdir folderabc
.
Удалите эхо
, как только вы почувствуете, что оно делает все правильно вещь.