Я должен взять первые 3 файла из каталога, запускающегося с буквы B в алфавитном порядке к другому каталогу. Я придумал эту команду:
find /users/students/ejackson/A3-ejackson-55688-114906/CS282in \
-name "b*" | sort | head -3
И это производит надлежащие файлы, но я ничего не могу сделать с ними. Идеально я просто передал бы вывод по каналу вышеупомянутой команды к mv
, но я не думаю, что это возможно.
(P.S. Я должен сделать это без grep
, sed
или awk
)
Можно взять список файла и обработать их через для цикла в сценарии оболочки, или если Вы на самой командной строке (это просто будет более твердо читателю),
Проверьте эту статью в nixCraft. Другое учебное руководство также.
Необходимо смочь сделать что-то как
for f in `find /users/students/ejackson/A3-ejackson-55688-114906/CS282in -name "b*" | sort | head -3`
do
cp $f [target]
done
Вы упомянули, что используете tcsh
. Семейство Оболочек C не совместимо с Оболочками Bourne. Эта команда могла бы работать:
set THREE_FILES=`find …`
cp $THREE_FILES NEW_DIRECTORY
Первое set
команда делает новую переменную среды названной THREE_FILES
и сохраняет вывод в ту переменную. cp
берет эти три файла и копирует их в NEW_DIRECTORY
.
Вместо парсинга 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, которые главным образом используют удар