그래서 저는 Ubuntu 컴퓨터에 77개의 하위 폴더가 있는 디렉터리를 가지고 있습니다. 각 폴더에는 다양한 수의 토렌트 파일이 들어 있습니다. 하위 폴더에는 총 427개의 토렌트가 포함되어 있습니다. 하위 폴더에서 상위 디렉터리로 모두 이동하고 싶습니다.
이득은 무엇입니까? 일부 파일의 이름이 정확히 동일합니다. 이동 후 이름이 어떻게 바뀌었는지는 중요하지 않지만 이를 수정하는 가장 쉬운 방법은 abc.torrent ---> abc1.torrent, abc2.torrent 등(더 많은 경우)입니다.
모든 파일을 상위 디렉토리로 추출하는 다음 코드를 찾았습니다.
find . -mindepth 2 -type f -print -exec mv {} . \;
--backup을 사용하여 동일한 이름의 파일을 복구할 수 있다는 것을 알고 있습니다. 그래서 코드에 다음을 추가했습니다.
find . -mindepth 2 -type f -print -exec mv --backup=numbered {} . \;
그런데 실행해 보니 427개가 아닌 167개의 파일만 이동하게 되었습니다.
또한 -i를 사용하여 각 질문을 개별적으로 물어볼 수 있다는 것도 알고 있지만 시간이 꽤 걸립니다. 이것을 자동화할 수 있는 방법이 있나요?
답변1
제가 이해한 바에 따르면, 두 번째 발견은 작동할 것입니다. 이 발견을 파이프하면 wc -l
예상대로 427이 반환됩니까?
동일한 작업을 수행하는 빠른 bash 스크립트는 다음과 같습니다.
#!/bin/bash
for torrent in $(find /path/to/target/dir -mindepth 2 -type f); do
count=0
# get filename and remove any spaces
filename=$(echo $torrent | tr -d ' ' | awk -F '/' '{print $NF}')
# if it exists in the current dir, name it $count-$filename
while [ -f /path/to/target/dir/$filename ]; do
((count++))
filename=$count-$filename
done
# do the move
mv "$torrent" /path/to/target/dir/$filename
done