Как переименовать файлы в подкаталогах на основе имени каталога - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь переименовать файлы csv в моем подкаталоге на основе имени подкаталога, а также добавляю _1.csv. Например: filename_1.csv, filename_2.csv для каждого файла в подкаталоге.

Я написал скрипт bash, но он не дает правильного вывода.

#!/bin/bash
num=1
parent=/whois/v10_cctlds/full/
newfolder=/whois/csv7/
mkdir "$newfolder"
for folder in "$parent"/*; do
  if [[ -d "$folder" ]]; then
    foldername="${folder##*/}"
    for file in "$parent"/"$foldername"/*; do
      filename="${file##*/}"
      newfilename="$(foldername $num).csv"
      cp "$file" "$newfolder"/"$newfilename"
    done
  fi
done

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Я подозреваю, что вы хотите этого, включая мои комментарии.

#!/bin/bash
parent=/whois/v10_cctlds/full/
newfolder=/whois/csv7/
mkdir -p "$newfolder"

for folder in "$parent"/*/; do
    num=0
    foldername=$(basename "$folder")
    for file in "$folder"/*; do
        if [[ -f "$file" ]]; then
            cp -v "$file" "$newfolder/${foldername}_$((++num)).csv"
        fi
    done
done
0 голосов
/ 28 июня 2018

Попробуйте с приведенным ниже сценарием:

#!/bin/bash
parent=/whois/v10_cctlds/full/
newfolder=/whois/csv7/

for i in `ls $parent`
do
        let num=1
        for a in `ls $parent/$i`
                do mv $parent/$i/$a $newfolder"$i"_$num.csv
                num=`expr "$num" + 1`
                done
done
...