명령줄을 사용하여 이 폴더의 내용을 병합하고 싶습니다.
.
├── folder1
│ │ file.txt
│
├── folder2
│ │ file.txt
│
└───folder3
│ file.txt
어떻게 해야 하나요?
답변1
cp
마침내 나는 이것을 사용하여 이것을 할 수있었습니다--backup
배너.
cp --backup=numbered */*.txt new_directory/
답변2
다음 명령줄 루프는 현재 디렉터리에 있는 "folder*"라는 각 폴더의 (최상위) 내용을 "new_directory"라는 디렉터리에 복사합니다. 기본적으로 glob은 /*
"점 파일"과 일치하지 않습니다. shopt -s dotglob
이 동작을 변경하려면 . 동일한(기본) 파일 이름이 new_directory에 이미 존재하는 경우 대상 파일 앞에 원래 폴더(및 밑줄)를 추가하여 고유하게 만듭니다.
한 줄에 모두 :
for f in folder*/*; do [ ! -e "new_directory/$(basename "$f")" ] && { cp "$f" new_directory/; continue; }; [ -e "new_directory/$(basename "$f")" ] && cp "$f" "new_directory/$(dirname "$f")_$(basename "$f")"; done
읽기 쉽도록 분류:
for f in folder*/*
do
[ ! -e "new_directory/$(basename "$f")" ] && { cp "$f" new_directory/; continue; }
[ -e "new_directory/$(basename "$f")" ] && cp "$f" "new_directory/$(dirname "$f")_$(basename "$f")"
done
계획이 있다면이동하다그냥 원래 위치에서 파일을 cp
변경합니다 mv
.