모든 xlsx 파일을 원래 파일 이름이 포함된 새 디렉터리에 반복적으로 추출합니다.

모든 xlsx 파일을 원래 파일 이름이 포함된 새 디렉터리에 반복적으로 추출합니다.

각 xlsx에 대해 추출된 모든 파일의 새 디렉터리 이름으로 디렉터리/파일 이름을 유지하면서 모든 하위 디렉터리에서 반복적으로 추출하려는 Excel 파일이 많이 있습니다.

내가 찾은 파일을 추출하세요.이것. 불행히도 내 bash 지식에는 하나의 명령으로 모든 작업을 수행할 수 있는 기술이 부족합니다.

그래서 먼저 그것을 더 작은 부분으로 나누려고 노력합니다.

for z in ./*
do name="${z%%_*}"; dest=".${name//[ .-]/}"; mkdir "$dest";
done

내가하려고 *하면

for z in ./*

현재 디렉토리의 모든 파일을 검색하고 예상과 다른 결과를 얻습니다.

find . -name "*.xlsx"

그래서 나는 그것을 되돌릴 수 있는지 시도합니다.

for f in | find . -name "*.xlsx"; do d="${f}"; mkdir -p "$d"

하지만 내 파이프라인이 잘못되었기 때문에 분명히 작동하지 않습니다.

답변1

bash당신의 이별이 옳은 것인지 모르겠어요 .

오래 전에 bash 사용을 중단했기 때문입니다.

그러나 루프에서 find의 출력을 원할 경우 다음을 시도하십시오.

find . -name '*.xlsx' -print0 |
    while IFS= read -r -d $'\0' z; do
        name="${z%%_*}" 
        dest=".${name//[ .-]/}" 
        mkdir "$dest"
    done

관련 정보