Bash 스크립트에서 파일 이름을 하나씩 바꾸는 방법

Bash 스크립트에서 파일 이름을 하나씩 바꾸는 방법

다음과 같은 파일이 많이 있습니다.

data1.csv
data2.csv
.
.
data(n).csv

내 사용 사례는 스크립트를 호출할 때 data1.csv to data.csv파일을 변경하고 그대로 두고, 다음에 두 번째로 스크립트를 호출하면 data1.csv처리된 폴더로 이동하여 변경되는 것 data2.csv입니다 data.csv.

답변1

다음은 data.csv반복 간 상태를 유지하기 위해 요청된 파일에 대한 링크 역할을 합니다.

# check to see if an argument is given
if [ "$#" -ne 1 ]; then
        echo "Illegal number of parameters"
        exit
fi

# check if ran before if so move that to processed/ directory
if [ -h "data.csv" ]; then
        prev=`readlink data.csv`
        echo "Found previous run $prev"
        rm -f data.csv  # remove link
        mv -f $prev processed/  # move previous file to processed directory
        echo "Moved to processed/$prev"
fi

# check to see if file exists
if [ -e data$1.csv ]; then
        ln -s data$1.csv data.csv  # link data.csv to the requested file
        echo "Linked data.csv -> data$1.csv"
else
        echo "No such file data$1.csv"
fi

답변2

파일 이름에 줄 바꿈이 없으면 bash 스크립트에서 다음 명령을 사용하여 처리할 첫 번째 파일을 찾을 수 있습니다.

first=$(ls --sort=version *.csv | head -1)
ln -s "$first" data.csv 

그러나 파일 이름을 바꾸기 전에 기존 기존 파일이 제외되었는지 확인해야 합니다.

#! /bin/bash
if [ -e data.csv ] ; then
   mv $(readlink data.csv) backup_directory
   rm data.csv
fi

올바른 순서로 결합하고 마지막에 처리를 추가하면 data.csv스크립트를 반복적으로 호출하여 모든 파일을 처리할 수 있습니다.

관련 정보