cp 명령의 긴 경로를 복사하는 가장 빠른 방법은 무엇입니까? [복사]

cp 명령의 긴 경로를 복사하는 가장 빠른 방법은 무엇입니까? [복사]

Windows 시스템에서 SSH를 통해 Linux 기반 NAS를 제어하고 있습니다. 내가 원하는 것은 cp -al 명령을 사용하여 한 디렉터리에서 다른 디렉터리로 폴더를 빠르게 복사하고 그 안에 있는 모든 파일을 하드 링크하는 것입니다. 현재 내가 하는 일은 ls로 디렉터리를 나열한 다음 마우스로 강조 표시하고 마우스 오른쪽 버튼을 클릭하여 복사한 다음 다시 붙여넣는 것입니다. 예를 들어 "Madagascar.2005.1080p.BluRay"라는 디렉터리를 하드 링크하는 경우입니다. DTS.x264" 방금 디렉토리 이름을 복사하고 수동으로 작성한 cp -al "sourceDir/Movie/다음 "Madagascar.2005.1080p.BluRay.DTS.x264"를 붙여넣었습니다. 전체 명령을 빌드하기 위해 두 번째 디렉토리에서도 동일한 작업을 수행했습니다.

cp -al "sourceDir/Madagascar.2005.1080p.BluRay.DTS.x264" "dstDir/Movie/Madagascar.2005.1080p.BluRay.DTS.x264"

전체 프로세스는 매우 번거롭고 Linux 쉘에서 수행되는 다른 모든 작업이 마우스 없이 수행되면 부자연스럽게 느껴집니다.

마우스를 사용하여 내용을 복사하여 붙여넣거나 전체 이름을 수동으로 입력하지 않고도 이 긴 명령을 구성하는 더 좋은 방법이 있습니까?

편집: 소스 디렉토리를 삭제하고 싶지 않습니다. 소스 디렉터리는 대략 다음과 같습니다.

'Lost S04 720p BluRay DTS x264
 Lost.S03.720p.BluRay.DTS.x264
'Million.Dollar.Extreme.Presents.World.Peace.S01.1080p'
'The Simpsons S01 1080p DSNP WEBRip DDP5.1 x264'
'The Simpsons S02 1080p DSNP WEBRip DDP5.1 x264'

소스 또는 대상 디렉토리를 자주 변경하겠습니다.

답변1

따라서 우선 적절한 파일 관리자가 있는 것처럼 작업하려고 노력하고 있는 것입니다. 범죄는 아니니 꼭 이용해주세요 :)

전통적으로 Midnight Commander는 반드시 사용해야 하는 도구입니다 mc. NAS에 직접 설치할 수도 있습니다!

요즘 같은 시대에는 ranger(당신이 데비안을 사용한다고 했으니 그게 sudo apt install ranger사실입니다.) 아마도 당신이 원하는 것에 더 가깝고 더 현대적으로 느껴질 것입니다. "창"에서 여러 파일을 선택한 space다음 다음을 @사용하여 해당 파일에 대해 명령을 실행할 수 있습니다. :shell %s화면 하단에 표시됩니다. Enter를 누르면 %s선택한 파일명이 모두 확장되므로 명령어를 입력하고 :shell cp -al -t /dstDir/Movie %sEnter를 누르면 됩니다. 그게 다야.

그러나 ranger이는 강력한 도구이며( mc적어도 눈에 띄는 메뉴가 있습니다!) 10분짜리 튜토리얼이 큰 차이를 만들 수 있습니다.


콘텐츠를 복사하여 붙여넣기 위해 마우스를 사용하거나 전체 이름을 수동으로 입력할 필요가 없습니까?

tab가장 기본적인 쉘을 제외한 모든 쉘에 있는 -completion 에 대해 들어보셨을 것입니다 ! 파일 이름의 첫 글자를 입력하고 을 클릭합니다 tab. 이렇게 시작된 파일이 하나만 있으면 완료됩니다. 선택 사항이 여러 개인 경우 tab두 번 눌러 최종 후보 목록을 가져옵니다. ( zshbash 대신 oh-my-zsh나 다른 좋은 쉘 확장기를 사용하면 훨씬 더 편리하게 완성할 수 있습니다.)

답변2

긴 파일 이름을 복사하여 붙여넣는 가장 빠른 방법은 전혀 복사하여 붙여넣지 않는 것입니다!

(1) 변수 사용:

예를 들어:

cd sourceDir/  
OneDir=$(ls -d Mada*) # Make sure you get only One Directory ; no Copy with mouse !  
echo $OneDir # verify  
cp -al "$oneDir" "../dstDir/Movie/$OneDir" # Navigate to Dest Directory ; no Paste with mouse !  
OneDir=$(ls -d T*Sim*S01*)  
echo $OneDir  
cp -al $oneDir ../dstDir/Movie/$OneDir  
OneDir=$(ls -d T*Sim*S02*)  
echo $OneDir  
cp -al $oneDir ../dstDir/Movie/$OneDir  

(2) 자동화하는 스크립트로 이를 향상시킵니다.

# Pseudo-Code  
cd sourceDir/  
for OneDir in $(ls -d *) {  # Use the "for" Syntax (& Quoting Syntax) according to your Shell  
    echo $OneDir  # You could include interactivity, to ask whether to Process Current OneDir or not  
    cp -al "$oneDir" "../dstDir/Movie/$OneDir"  
}  

답변3

의향이 있다고 하셨는데,

cp -al한 디렉터리에서 다른 디렉터리로 폴더를 빠르게 하드 링크하려면 이 명령을 사용하세요.

그러면 파일을 한 번 복사하는 과정을 보여드리겠습니다.

디렉토리와 그 내용을 실제로 복사하려면 다음 명령을 사용하여 한 단계로 모든 작업을 수행할 수 있습니다.

cp -al sourceDir/. dstDir/Movie/

sourceDir선택한 파일을 디렉터리에서 다른 디렉터리로 이동하고 싶을 수도 있습니다 dstDir. 와일드카드를 사용하여 패턴과 일치하는 하나 이상의 파일을 선택하거나 Tab부분적으로 입력된 이름을 자동 완성할 수 있습니다(남은 일치 항목 모음을 보려면 다시 클릭하세요).

cp -al sourceDir/Lost* dstDir/Movie/

관련 정보