Простий пошук і копіювання скрипту для linux [закрито]


2

Я досить новачок до сценаріїв у Linux. Що я намагаюся отримати це простий скрипт, який знаходить файл за його точною назвою, а потім скопіювати цей файл в іншу папку.

Отже, по суті це має працювати як "./findandcopy [ім'я файлу]" Ось що я отримала досі:

#!/bin/sh

ARGS=1
E_BADARGS=65
E_NOFILE=66

if [ $# -ne "$ARGS" ]  # Correct number of arguments not passed
 then
  echo "Usage: `basename $0` filename"
  exit $E_BADARGS
fi


'find ./ -name \$1'  -exec cp {} /home/marc/ \;

але це не буде працювати для мене. Оцініть будь-яку допомогу.


Просто використовуйте find . замість find ./ - Вам не потрібно вводити косу риску в кінці імені каталогу, і, якщо ви звикли набирати ./ коли ви маєте на увазі поточний каталог (для якого . достатньо), то колись ви випадково напишете / або /., з можливими катастрофічними результатами. Вам не потрібно / в кінці /home/marc/.
Scott

Відповіді:


3

Ви повинні використовувати:

find ./ -name "$1" -exec cp {} /home/marc/ \;

Без жодних лапок навколо нього. В іншому випадку оболонка буде обробляти весь find ./ -name \$1 команду як єдине ім'я файлу і спробуйте виконати це.

Ви повинні цитувати аргумент "$1" щоб запобігти розширенню пробілів або глобусів у імені файлу.


працює зараз, THX для швидкої відповіді :) думаю, я повинен перевірити деякі основні підручники сценарію ^^
LetzFetz

Я рекомендую: tldp.org/LDP/abs/html - Ви знайдете приклади для майже всього. Зверніть увагу, що, коли ви ставите питання в майбутньому, завжди краще бути більш конкретними, ніж "це не буде для мене". Якщо ви отримуєте помилки, додайте їх.
slhck

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