是否有相当于剪切和粘贴文件隐喻的命令行?


3

上下文:我在文件夹中导航,并找到我需要的文件。我想将我的文件复制到某处以便将它们放在其他地方。但我不想处理试图找出源和目的地的相对路径。

基本上我想要的东西就像我在文件浏览器中可以做的那样(选择文件,复制,粘贴到其他地方)。所以工作流程就像......

cd some/crazy/directory/with/too/long/a/name
copy file 
cd ~/some/other/place
paste 

不是一个真正的解决方案-但你有没有考虑pushdpopd。你可以做一些像mv `popd`/* .切割/粘贴的替代方案
bdecaf 2013年

这是关于Linux还是Windows?
gronostaj 2013年

这是针对Linux
rtpg 2013年

Answers:


1

没有内置命令在bash中执行此操作。但是,有一个脚本(一个函数和一个别名)可以放入.bashrc中,它可以为您提供功能。

这些详细信息请参见http//www.webupd8.org/2010/10/copy-paste-files-from-command-line-bash.html

并且是:

ccopy(){ for i in $*; do cp -a $i /tmp/ccopy.$i; done }
alias cpaste="ls -d /tmp/ccopy* | sed 's|[^\.]*.\.||' | xargs -I % mv /tmp/ccopy.% ./%"

正如网站上的描述所示,只需将这两行添加到.bashrc中,然后您可以使用ccopy将文件添加到要复制的文件列表中,然后使用cpaste将它们粘贴到目标。您还可以通过查看/ tmp / ccopy *来“管理”文件列表。

注意 - 此脚本仅限于具有“普通”名称的常规文件。它明确地不处理文件名中的“空格”,也不会复制/粘贴文件夹。链接的文章有一个链接指向与文件夹一起使用的版本,但我不知道该版本是否可以处理文件/文件夹名称中的空格或非常规字符。我从命令行完成了大部分的(linux)工作,所以这个版本已经满足了我的用例。


警告:此答案不会处理文件名中的空格或引号(或可能是其他元字符)。
Adrian Pronk 2013年

@AdrianPronk谢谢 - 我链接到的文章 - 以及它不处理文件夹(我的用例都不需要) - 但我会编辑我的答案以注意这两个限制。
PJC 2013年

1

您可以将文件名分配给变量。readlink -f会给你/ absolute / path / to / file。

cd some/crazy/directory/with/too/long/a/name
copy="$(readlink -f file)"
cd ~/some/other/place
cp "$copy" newfile

当然,这仅适用于单个文件。


1

即使您不想使用@PJC建议的脚本,您也可以使用它的主要思想:首先将文件复制到/tmp,然后从那里获取:

cd some/crazy/directory/with/too/long/a/name
cp file /tmp
cd ~/some/other/place
cp /tmp/file .

它并没有完全解决问题:你必须重新输入文件名,但至少没有它的路径。当我感到懒惰时,我正在使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.