Чи є еквівалентний командний рядок для вирізання та вставки метафори для файлів?


3

Контекст: Я пересуваюся по папках і знаходжу потрібні мені файли. Я хотів би скопіювати свої файли кудись, щоб розмістити їх десь в іншому місці. Але мені не хочеться мати справу зі спробами з'ясувати відносні шляхи до джерела та місця призначення.

В основному я хочу щось подібне до того, що я можу зробити у файловідвідувачах (виділити файли, скопіювати, вставити десь в іншому місці). Тож робочий процес, як ...

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

насправді не рішення - але ви вважали pushdі popd. Ви можете зробити щось на зразок mv `popd`/* .альтернативи вирізати / вставити
bdecaf

Це про Linux чи Windows?
gronostaj

Це для Linux
rtpg

Відповіді:


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, і ви можете потім скопіювати файл, щоб додати файли до списку файлів, які потрібно скопіювати, а потім скопіюйте, щоб вставити їх до місця призначення. Ви також можете "керувати" списком файлів, переглянувши / tmp / ccopy *.

ПРИМІТКА - цей скрипт обмежений звичайними файлами з "звичайними" іменами. Він явно не справляється з "пробілами" у назві файлу, а також не копіює / вставляє папки. Зв'язана стаття містить посилання на версію, яка працює з папками, але я не знаю, чи може ця версія обробляти пробіли або нерегулярні символи у назвах файлів / папок. Більшість моєї роботи (Linux) я виконую з командного рядка, щоб ця версія відповідала моєму випадку використання.


Попередження: ця відповідь не впорається з пробілами чи лапками (або, можливо, іншими мета-символами) у назвах файлів.
Адріан Пронк

@AdrianPronk Спасибі - стаття, до якої я посилаюсь, охоплює цю тему - а також те, що вона не обробляє папки (ані потрібні для мого випадку використання) - але я відредагую свою відповідь, щоб зазначити обидва обмеження.
PJC

1

Ви можете призначити ім'я файлу змінній. readlink -fдасть вам / абсолютний / шлях / до / файл.

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 .

Це не вирішує проблему повністю: вам потрібно повторно ввести ім'я файлу, але принаймні без його шляху. Я використовую його, коли мені лінь.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.