내 디렉토리에 4개의 파일이 있는데 mv 명령은 모든 파일을 이동하지 않고 .pgp 확장자를 추가합니다.
스크립트를 작성하는 대신 명령줄에 유지하고 싶습니다. 아마도 제가 여기/Google에서 잘못된 질문을 하고 있는 것 같습니다.
4개의 파일은 다음 위치에 있습니다 /test/
.test-1 test-2 test-3 test-4
이것을 시도했지만 mv /test/test* /test/dir/*.pgp
*.pgp가 디렉토리가 아니기 때문에 작동하지 않습니다.
루프를 사용하여 이를 수행하는 유일한 방법입니까? 또한 for 루프여야 합니까? 저는 쉘 스크립팅을 처음 접했고 그다지 자신감이 없습니다 ...
답변1
먼저 파일 이름을 바꾼 다음 이동할 수 있습니다.
rename 's/(.*)/$1.pgp/' test*; mv test*.pgp /test/dir
답변2
유일한 방법은 아니지만 가장 좋고 쉬운 방법은 실제로 루프, 바람직하게는 for 루프입니다. 이를 수행하는 방법은 간단합니다.
cd /test
for file in test*; do
mv "$file" /test/dir/"$file".pgp
done
그게 다야.
답변3
예, 루프, for 루프를 사용해야 합니다.
간단한 두 단계만 거치면 됩니다:
set -- test-{1..4}
for f; do mv "$f" "dir/$f.pgp"; done