
일부 검색 기준에 따라 많은 파일을 찾는 명령을 실행했습니다. 다음과 같이 파일을 반환합니다.
./somepath/somepath/file.something
./asdf/asdf/s.php
./etc/a.php
./a/b/c/d/e/f/g.jpg
그래서 이 출력을 파일(즉, 한 줄에 하나의 파일)로 캡처하면 파일을 반복하고 파일을 하나씩 지정된 디렉터리로 이동하는 명령을 작성하는 데 도움을 줄 수 있는 사람이 있는지 궁금합니다.
미리 감사드립니다.
답변1
while read -r filename
do
mv -- "$filename" directory
done < list_of_files.txt
테스트되지 않았지만(Windows를 실행하는 업무용 PC를 사용하고 있습니다) 작동할 것입니다.
답변2
your_command | xargs -I% mv "%" dest_dir
명령이 다음과 같 find
거나 파일 이름을 null로 종료하는 방법이 있는 경우:
your_command | xargs -0 -I% mv "%" dest_dir
또는
find [find-args] -print0 | xargs -0 -I% mv "%" dest_dir
파일 이름을 종료하기 위해 null을 사용하면 공백, 개행 등을 포함할 수 있는 파일 이름에 대해 작업할 수 있습니다.
xargs
이미 파일을 생성한 경우 다음을 사용하여 파일을 처리할 수도 있습니다 .
xargs -a filename -I% mv "%" dest_dir
답변3
파일 이름에 공백이 포함되어 있지 않은 경우 또 다른 옵션은 다음과 같습니다.
mv `search_command_here` dest_directory
(백틱 구문도 bash-ism이지만 질문에서는 이것이 Linux에 있고 모든 주요 Linux 배포판이 기본적으로 bash를 사용한다고 구체적으로 명시하고 있습니다.)