우선 이것은 코드입니다.
#!/bin/bash
i=1;
while read line;
do
cp "$i.eps" "$line.eps"
while read line2;
do
mv "$line.eps" "$line2"
sed -i '1d' cate.txt
done < cate.txt
sed -i '1d' cate.txt
((i++))
done < Names.txt
cp "$i.eps" "$line.eps"
설명하겠습니다. 완전히 2 개의 파일이 있습니다. 그중 하나는 파일 이름이 포함 된 "Names.txt"라는 이름입니다. 그리고 다른 파일은 디렉토리 이름을 포함하는 "cate.txt"입니다. 또한 다음과 같은 이름을 가진 .eps 파일이 있습니다. 1.eps, 2.eps 등 ...
그래서 제가하고 싶은 것은 "Names.txt"의 첫 번째 줄을 읽고 첫 번째 줄로 첫 번째 파일의 이름을 변경하는 것보다 "cate.txt"의 첫 줄을 읽고 첫 번째 파일을 아래로 옮기는 것입니다. "cate.txt"에서 읽은 디렉토리
추신 1 : 항상 "cate.txt"의 첫 번째 줄을 읽고 있었기 때문에 sed 명령을 사용했습니다. 그래서 첫 번째 줄을 읽은 후에는 지우고 다시 첫 줄을 읽는 것보다 더 할 수 있다고 생각했습니다. 그러나 코드는 그것을 성공적으로 수행하지 못했습니다.
추신 2 :이 코드에서 "Names.txt"를 읽고 .eps 파일의 이름을 바꿀 수 있습니다. 그러나 "cate.txt"를 읽기 시작하면 스크립트가 제대로 작동하지 않습니다.
감사합니다!
라고 가정 names.txt
하고 cate.txt
당신이 그들을 함께 결합하고 그 대신 출력을 사용할 수 있습니다, 같은 수의 행이 있습니다
#!/bin/bash
i=1
while read filename dirname; do
mkdir -p $dirname
cp $i.file $dirname/$filename
((i++))
done < <(paste names.txt cate.txt)
실행 전 예 :
$ tree
.
|-- 1.file
|-- 2.file
|-- 3.file
|-- cate.txt
`-- dirs.txt
$ cat names.txt
first_file
second_file
third_file
$ cat cate.txt
first_dir
second_dir
third_dir
그리고 이후 :
$ tree
.
|-- 1.file
|-- 2.file
|-- 3.file
|-- cate.txt
|-- dirs.txt
|-- first_dir
| `-- first_file
|-- second_dir
| `-- second_file
`-- third_dir
`-- third_file
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다