Копирование и переименование файлов

Я пытаюсь скопировать несколько файлов из отдельных папок и вставить их в новую папку с новыми именами файлов. Может ли кто-нибудь помочь мне с тем же? Например: у меня есть папка 1,2,3,4,5, и у каждого из них есть файл x.txt Я хочу взять файл file.txt из каждой папки и переименовать его в 1filex, 2filex, 3filex, 4filex, 5filex и их новое местоположение в folderabc.

Любая помощь будет принята с благодарностью.

Спасибо

0
задан 18 June 2020 в 18:32

2 ответа

Ваша проблема может быть разбита на несколько шагов.

  1. Создайте каталог назначения, если он не существует
  2. Скопируйте файл с именем filex.txt из каталога 1 в место назначения
  3. Повторите шаг 2 для каталогов 2, 3, 4 и 5.

Вы можете сделать это в сценарии из 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
1
ответ дан 19 June 2020 в 21:23

Для случая, указанного в вашем вопросе, простой скрипт, подобный этому, будет делать:

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

Каталог назначения folderabc должен существовать - если его нет, то сначала создайте его с помощью mkdir folderabc .

Удалите эхо , как только вы почувствуете, что оно делает все правильно вещь.

1
ответ дан 19 June 2020 в 21:23

Другие вопросы по тегам:

Похожие вопросы: