このフォルダー/full/path/sourceFolder
には次のファイルがあります。
full/path/sourceFolder/fileA
/full/path/sourceFolder/copyA -> fileA
/full/path/sourceFolder/copyB
シンボリックリンクは同じフォルダー内のファイルを指し、フルパスを使用せず、リンクへの相対パスに依存していることがわかります。
ここで、sourceFolderのcopy *という名前のすべてのファイルをdestinationFolderにコピーするコピーコマンドが必要です。ファイルcopyAをコピーすると、symlinkのソース、つまりfileAがコピーされますが、copyAという名前は保持されます。copyコマンドは、ファイルcopyBをコピーする場合にも機能するはずです。
これはできますか?
私はこれらのコマンドを試しましたが、ほとんどが私の参照が相対的であるため、動作しません:
cp -rf --preserve=links /full/path/sourceFolder/copy* /target/path/
cp -RP /full/path/sourceFolder/copy* /target/path/
cp -Hrf /full/path/sourceFolder/copy* /target/path/
cp -Lrf /full/path/sourceFolder/copy* /target/path/
私はアイデアを使い果たしています、これを達成する最もエレガントな方法は何ですか?
行の先頭に4つのスペースを使用すると、多くの `文字を使用するよりもコーディングのブロックにとって簡単です。
—
ジョーP
これはやりたくないことのように思えます。私は、コピーが壊れたリンクを作成し、ターゲットがコピーされるときに解決されるという要件を期待しています。このような動作が必要な場合は、ハードリンクを使用してください。
—
AFH
パスを修正
—
...-rrlamichhane
問題を再現できません。
—
カミルマシオロウスキ
cp /full/path/sourceFolder/copy* /target/path/
誤解しない限り、私にとっては平易な作品です。結果のファイルは、名前copyA
とcopyB
。私のテストベッドはUbuntu 16.04.2 LTSです。
sourceFolder
、時には含めません。また、あなたが望む結果を示しますか?cp path1/* path2/
私にとっては、path1のシンボリックリンクがpath2の通常のファイルにコピーされます。