Как да премествате файлове и папки в командния ред на Linux

Сподели

Изрязване, копиране и поставяне са част от ежедневния компютърен живот.

В предишната глава научихте за копирането на файлове и папки (директории) в терминала.

В тази част от поредицата Основи на терминала ще научите за операцията изрязване и поставяне (преместване) в терминала на Linux.

Преместване или изрязване-поставяне?

Добре! Изрязване-поставяне не е правилният технически термин тук. Нарича се преместване на файлове (и папки).

Тъй като не сте запознати с командния ред, може да намерите термина „преместване“ за объркващ.

Когато копирате файл на друго място с помощта на командата cd, изходният файл остава на същото място.

Когато преместите файл на друго място с помощта на командата mvизходният файл вече не остава в първоначалното местоположение.

Това е същата операция за изрязване и поставяне (Ctrl+X и Ctrl+V), която правите в графичен файлов мениджър.

📋

По принцип преместването на файлове в командния ред може да се смята за същото като изрязване-поставяне в графична среда.

Преместване на файлове

Linux има специална команда mv (съкратено от move) за преместване на файлове и директории на други места.

А използването на командата mv е доста просто:

mv source_file destination_directory

Тук също играе ролята на пътя. Можете да използвате абсолютния или относителния път. Което отговаря на вашите нужди.

Нека видим това с пример. Трябва да практикувате заедно с него, като копирате примерните сценарии на вашата система.

Това е структурата на директорията в примера:

[email protected]:~/moving_files$ tree
.
├── dir1
│   ├── file_2
│   └── file_3
├── dir2
│   └── passwd
├── dir3
├── file_1
├── file_2
├── file_3
├── file_4
├── passwd
└── services

3 directories, 9 files

Сега, да кажем, че искам да преместя file_1 да се dir3.

mv file_1 dir3
Пример за преместване на файлове в Linux с помощта на командата mv

Преместване на множество файлове

Можете да преместите няколко файла на друго място в една и съща команда mv:

mv file1 file2 fileN destination_directory

Нека продължим нашия примерен сценарий за преместване на множество файлове.

mv file_2 file_3 file_4 dir3
Пример за преместване на множество файлове в Linux

🖥️

Преместете файловете обратно в текущата директория от dir3. Имаме нужда от тях в следващите примери.

Премествайте файлове с повишено внимание

Ако дестинацията вече има файлове със същото име, дестинационните файлове ще бъдат заменени незабавно. Понякога няма да искате това.

Подобно на командата cp, командата mv също има интерактивен режим с опция -i.

И целта е същата. Поискайте потвърждение, преди да замените файловете на местоназначението.

[email protected]:~/moving_files$ mv -i file_3 dir1
mv: overwrite 'dir1/file_3'?

Можете да натиснете N, за да откажете замяната и Y или Enter, за да замените целевия файл.

Пример за интерактивно преместване в Linux

Преместете, но само актуализирайте

Командата mv идва с някои специални опции. Една от тях е опцията за актуализиране -u.

С това целевият файл ще бъде заменен само ако преместваният файл е по-нов от него.

mv -u file_name destination_directory

Ето един пример. file_2 беше променен в 10:39 и file_3 беше променен в 10:06.

[email protected]:~/moving_files$ ls -l file_2 file_3
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:39 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:06 file_3

В целевата директория dir1, file_2 е променен последно в 10:37 и file_3 е променен в 10:39.

[email protected]:~/moving_files$ ls -l dir1
total 0
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:37 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:39 file_3

С други думи, в целевата директория file_2 е по-стар, а file_3 е по-нов от тези, които се преместват.

Това също означава, че file_3 няма да ме премести, докато file_2 ще бъде актуализиран. Можете да го проверите с времевите марки на файловете в целевата директория, след като изпълните командата mv.

[email protected]:~/moving_files$ mv -u file_2 file_3 dir1
[email protected]:~/moving_files$ ls -l dir1
total 0
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:39 file_2
-rw-rw-r-- 1 abhishek abhishek 0 Apr  4 10:39 file_3
[email protected]:~/moving_files$ date
Tue Apr  4 10:41:16 AM IST 2023
[email protected]:~/moving_files$ 

Както можете да видите, командата за преместване е изпълнена в 10:41 и само клеймото за време на file_2 е променено.

Използване на команда за преместване с опция за актуализиране

💡

Можете също да използвате резервната опция -b. Ако целевият файл се заменя, той автоматично ще създаде резервно копие с filename~ модел.

Отстраняване на неизправности: Целта не е директория

Ако премествате няколко файла, последният аргумент трябва да е директория. В противен случай ще срещнете тази грешка:

target is not a directory

Тук създавам файл с име dir. Името звучи като директория, но е файл. И когато се опитам да преместя няколко файла в него, очевидната грешка е там:

Обработката на target не е грешка в директория в Linux

Но какво ще стане, ако преместите един файл в друг файл? В този случай целевият файл се заменя със съдържанието на изходния файл, докато изходният файл се преименува като целеви файл. Повече за това в следващите раздели.

Преместване на директории

Досега сте видели всичко за преместването на файлове. Какво ще кажете за преместване на директории?

Командите cp и rm използваха recusrive опция -r съответно за копиране и изтриване на папки.

Въпреки това, няма такова изискване за командата mv. Можете да използвате командата mv за преместване на директории.

mv dir target_directory

Ето един пример, където премествам dir2 директория към dir3. И както виждате, dir2 заедно със съдържанието му се премества в dir3.

Преместване на папки в командния ред на Linux

Можете да местите множество директории по същия начин.

Преименувайте файлове и директории

Ако искате да преименувате файл или директория, можете да използвате същата команда mv.

mv filename new_name_in_same_or_new_location

Да приемем, че искате да преименувате файл на същото място. Ето един пример, в който преименувам file_1 да се file_one в същата директория.

Преименувайте файлове с командата mv

Можете също да премествате и преименувате файловете. Просто трябва да предоставите пътя на директорията и името на файла на дестинацията. Ето, преименувам services файл към my_services докато го премествате към dir3.

[email protected]:~/moving_files$ ls
dir  dir1  dir3  file_2  file_3  file_one  passwd  services
[email protected]:~/moving_files$ mv services dir3/my_services
[email protected]:~/moving_files$ ls dir3
dir2  my_services

📋

Не можете да преименувате няколко файла директно с командата mv. Трябва да го комбинирате с други команди като намиране и т.н.

Тествайте знанията си

Време е да практикувате това, което току-що сте научили.

Създайте нова папка, за да практикувате упражнението. Тук създайте структура на директория като тази:

.
├── dir1
├── dir2
│   ├── dir21
│   ├── dir22
│   └── dir23
└── dir3

Копирайте файла /etc/passwd в текущата директория. Сега го преименувайте secrets.

Направете три нови файла с имена file_1, file_2 и file_3. Преместете всички файлове в dir22.

Сега преместете dir22 директория към dir3.

Изтрийте цялото съдържание на dir2 сега.

В предпоследната глава от поредицата Основи на терминала ще научите за редактирането на файлове в терминала. Останете на линия.

Източник: itsfoss.com

Публикациите се превеждат автоматично с google translate

Loading


Сподели