2017-12-30 18 views
-1

나는 리눅스가 처음이다.Bash - 데이터베이스 값에서 재귀 적으로 파일 이름 바꾸기

약 1000 개의 파일이 있고 그 파일 이름이 데이터베이스에 저장되어있는 폴더가 있습니다.

내가하고 싶은 일은 재귀 적으로 같은 이름의 데이터베이스에서 다른 값으로 바꾸는 것입니다.

내 DB 구조

oldVal  | newVal 
oldFileName | newFileName 

짧은과이 작업을 수행하는 가장 효율적인 방법은 무엇입니까?

미리 감사드립니다.

+0

비슷한 게시물에 언급 된 단계가 거의 없습니다. https://stackoverflow.com/questions/8416990/shell-bash-shortcut-for-bulk-renaming-of-files-in-a-folder. 내가 더 많은 제어와 bash (추가 설치/도구 없음) 내장을 사용하므로 for 루프를 선호합니다. –

+1

재귀 적으로? 데이터베이스에 경로가 포함 된 파일 이름이 포함되어 있습니까? – Cyrus

+0

또는 * 재귀 적으로 *는 이름이 바뀐 파일의 이름을 다시 바꿀 수 있다는 것을 의미합니다. 예를 들어 데이터베이스에 항목 이름이 'name1 | name2'와'name2 | name3', * name1 *은 * name3 *으로 이름을 변경해야합니까? – user1934428

답변

1

텍스트 파일로 데이터베이스 정보를 내보낼 수 있습니까? 그렇다면 MySQL 데이터베이스의 경우이 방법을 사용해보십시오.

첫째, ...

/사용자/경로// 파일 /와// 폴더의 이름을 바꿀 수 로 이동 한 후 ... 당신의 MySQL의에

SELECT field1,field2 
FROM table 
INTO OUTFILE '/your/path/with/files/to/rename/export.txt' 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'; 

를이 쿼리를 실행하고이 붙여 넣기

SAVEIFS=$IFS 
IFS=$(echo -en "\n\b") 
LIST=`cat /your/path/with/files/to/rename/export.txt` 
for i in $LIST ; 
do 
field1=`echo $i | cut -d',' -f1` 
field2=`echo $i | cut -d',' -f2` 
\mv "./"$field1 "./"$field2 
done 
IFS=$SAVEIFS 
관련 문제