
다음과 같은 폴더 구조가 있습니다.
/Brand/ProductCode01
/Brand/ProductCode02
각 ProductCode## 폴더에는 다음과 같은 많은 JPG 파일이 포함되어 있습니다.
image01.jpg, image02.jpg
등.
"ProductCode##" 폴더에 있는 모든 파일을 나열하는 ProductCode당 한 줄이 포함된 파일을 만들어야 합니다. 예를 들면 다음과 같습니다.
/Brand/ProductCode01/image01.jpg /Brand/ProductCode01/image02.jpg /Brand/ProductCode01/image03.jpg
/Brand/ProductCode02/image01.jpg /Brand/ProductCode02/image02.jpg
모든 파일은 한 줄에 나열되어야 하며 공백으로 구분되고 마지막 파일 이름에 개행 문자로 끝나야 합니다.
어떤 제안이 있으십니까?
감사해요.
답변1
CR-LF와 LF를 혼동하지 마십시오!또한 ~으로 알려진씨결혼오른쪽반품그리고엘이네에프필요
이와 같이:
$ tree
.
└── Brand
└── Ducati
├── A 1060
│ ├── image01.jpg
│ └── image02.jpg
├── A 1061
│ ├── image01.jpg
│ └── image02.jpg
├── A 1062
│ ├── image01.jpg
│ └── image02.jpg
└── A 1063
├── image01.jpg
└── image02.jpg
6 directories, 8 files
$ for d in ./Brand/Ducati/A*/; do echo "$d"image*.jpg; done | tee file.txt
./Brand/Ducati/A 1060/image01.jpg ./Brand/Ducati/A 1060/image02.jpg
./Brand/Ducati/A 1061/image01.jpg ./Brand/Ducati/A 1061/image02.jpg
./Brand/Ducati/A 1062/image01.jpg ./Brand/Ducati/A 1062/image02.jpg
./Brand/Ducati/A 1063/image01.jpg ./Brand/Ducati/A 1063/image02.jpg
bash
쉘처럼 zsh
Bourne에서도 작동 할 수 있습니다 .ksh
답변2
존재하다 zsh
:
{
for dir ( /Brand/ProductCode<->(Nn/) )
() {print -rC1 -- "$*"} $dir/image<->.jpg(Nn)
} > your-file.txt
또는 /
(glob 한정자) 내부에 이름이 있는 디렉터리 의 /Brand
경우정기적인파일( .
한정자)이 반복적으로 포함됩니다(여전히 n
glob 한정자를 사용하여 숫자로 정렬됨 n
):
{
for dir ( /Brand/*(Nn/) )
() {printf -rC1 -- "$*"} $dir/**/*(Nn.)
} > your-file.txt
줄 바꿈(또는 여기에서 구분 기호로 사용하는 공백)이 파일 경로의 모든 문자만큼 유효하기 때문에 브랜드당 여러 줄이 표시된다는 의미는 아닙니다.
답변3
그것은 함께 있어야합니다
for i in /Brand/Ducati/*/; do ( find "$i" -type f | sed -e "s/^/'/" -e "s/$/'/"| tr '\n' ' '|sed "s/ $/\n/" ); done
- 모든 파일 이름이 나열됩니다(/Brand/Ducati/subdirs/ 디렉토리 트리에 있음)(하위 디렉토리당 한 줄 세트)
- 각 파일 이름 앞에는 따옴표가 붙습니다(나중에 공백 및 기타 특수 문자가 포함된 파일 이름을 관리하기 위해).
- 개행 문자는 공백으로 변환됩니다.
- 각 줄의 마지막 공백은 개행 문자로 변환됩니다.
답변4
ls -1 | tr '\n' ' '
-q 및 -b 플래그도 참조하십시오.