Возьмите первые n файлы из каталога, запускающегося с конкретной буквы в алфавитном порядке к другому каталогу

Я должен взять первые 3 файла из каталога, запускающегося с буквы B в алфавитном порядке к другому каталогу. Я придумал эту команду:

find /users/students/ejackson/A3-ejackson-55688-114906/CS282in \
  -name "b*" | sort | head -3

И это производит надлежащие файлы, но я ничего не могу сделать с ними. Идеально я просто передал бы вывод по каналу вышеупомянутой команды к mv, но я не думаю, что это возможно.

(P.S. Я должен сделать это без grep, sed или awk)

3
задан 10 April 2017 в 10:48

3 ответа

Можно взять список файла и обработать их через для цикла в сценарии оболочки, или если Вы на самой командной строке (это просто будет более твердо читателю),

Проверьте эту статью в nixCraft. Другое учебное руководство также.

Необходимо смочь сделать что-то как

for f in `find /users/students/ejackson/A3-ejackson-55688-114906/CS282in -name "b*" | sort | head -3`
do
    cp $f [target]
done
0
ответ дан 1 December 2019 в 17:53

Вы упомянули, что используете tcsh. Семейство Оболочек C не совместимо с Оболочками Bourne. Эта команда могла бы работать:

set THREE_FILES=`find …`
cp $THREE_FILES NEW_DIRECTORY

Первое set команда делает новую переменную среды названной THREE_FILES и сохраняет вывод в ту переменную. cp берет эти три файла и копирует их в NEW_DIRECTORY.

0
ответ дан 1 December 2019 в 17:53

Вместо парсинга find вывод (очень плохая идея), можно использовать в своих интересах факт это for циклы по файлам заказанным способом:

i=0; for b in /path/to/files/b*; do (( ++i < 4 )) && echo mv -v -- "$b" /path/to/destination; done

Удалить echo после тестирования для фактического перемещения файлов.
Здесь это с ужасными комментариями:

# set a variable to 0 so we can increment it
i=0
# glob for the files starting with b
for b in /path/to/files/b*; do 
   # test how many times the loop has been run and if it's less than 4...
   (( ++i < 4 )) && 
     # ... then move the files*  
     echo mv -v -- "$b" /path/to/destination
done

*Этого не произойдет, пока Вы не удалите echo от запуска строки - вместо этого это отзовется эхом, какие файлы будут перемещены и где (разворачивают переменные для каждого повторения),

Я не знаю, работает ли это в tcsh, но он работает в ударе, так мог бы помочь другим пользователям Ubuntu, которые главным образом используют удар

1
ответ дан 1 December 2019 в 17:53

Другие вопросы по тегам:

Похожие вопросы: