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"を貼り付けました。コマンド全体を構築するために、2番目のディレクトリでも同じことをしました。

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(あなたがDebianを使っていると言ったので、それはsudo apt install ranger本当です)、おそらくあなたが望むものに近い、より現代的に感じるでしょう。 「ウィンドウ」で複数のファイルを選択し、space次のコマンド@を使用してそのファイルに対してコマンドを実行できます。:shell %s画面下部に表示されます。 Enterキーを押すと、%s選択したファイル名がすべて拡張されるため、コマンドを入力して:shell cp -al -t /dstDir/Movie %sEnterキーを押します。それはすべてです。

しかし、rangerこれは強力なツールであり(mc少なくとも目立つメニューがあります!)、10分のチュートリアルで大きな違いを生み出すことができます。


コンテンツをコピーして貼り付けるためにマウスを使用するか、フルネームを手動で入力する必要はありませんか?

tab最も基本的なシェルを除くすべてのシェルの-completionについて聞いたことがあるでしょう!ファイル名の最初の文字を入力してをクリックしますtab。このように起動されたファイルが 1 つしかない場合は完了です。複数の選択肢がある場合は、ダブル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あるディレクトリから別のディレクトリにフォルダをすばやくハードリンクするには、このコマンドを使用します。

次に、ファイルを一度コピーするプロセスを紹介します。

ディレクトリとその内容を実際にコピーするには、次のコマンドを使用して1つの手順ですべての操作を実行できます。

cp -al sourceDir/. dstDir/Movie/

sourceDir選択したファイルをディレクトリから別のディレクトリに移動したい場合がありますdstDir。ワイルドカードを使用してパターンに一致する1つ以上のファイルを選択するか、部分的に入力されたTab名前を自動補完することができます(残りの一致のコレクションを表示するにはもう一度クリックしてください)。

cp -al sourceDir/Lost* dstDir/Movie/

関連情報