Если необходимо скомпилировать из источника, как Вы заявили в своем вопросе, Вы не должны выбирать "Generic Linux" из выпадающего меню. Вместо этого выберите "Source Code" и загрузите "Универсальный Linux (Архитектурно-независимый), Сжатый Архив TAR".
Извлеките сжатый файл tar и прочитайте инструкции относительно того, как скомпилировать и установить.
Можно попробовать что-то как: (Обновленный для обеспечения пробелов в именах файлов)
head -50 abc.txt | tr "\n" "\0" | xargs -0 tar --null -no-recursion -uf abc.tar --directory=/tmp/temp
Команда head -50
получит Вас первые 50 строк файла списка. Этот результат передается по каналу |
кому: tr
. В основном, tr
выполнит операцию перевода, заменяя символы новой строки \n
нулевым символом \0
. Результат передается по каналу к xargs -0
, который преобразует все эти строки в аргументы tar
команда. -0
аргументы в пользу xargs
заставляет его разделить аргументы на основе нулевых символов вместо пробелов. Это сделает работы команды, даже если Ваши имена файлов будут иметь пробелы.
Благодаря Jordanm для его комментария.
Вдохновленный комментарием jordanm к ответу Bichoy, вот то, как можно иметь дело с именами файлов с пробелами в них:
count=50
i=1
while [ $i -le $count ]
do
read filename
tar --null -no-recursion -ruf abc.tar "$filename" --directory=/tmp/temp
i=$(($i+1))
done <abc.txt
Я использовал a while
цикл вместо выполнения for i in {1..50}
чтобы позволить Вам мягкому коду количество требуемых строк.
Можно использовать head
или tail
управлять количеством файлов, которые Вы ограничиваете из файла abc.txt
.
Образец abc.txt
файл.
$ cat abc.txt
afile1
afile10
afile2
afile3
afile4
afile5
afile6
afile7
afile8
afile9
Теперь мы будем смолить только 1-е 3 файла от abc.txt
:
$ head -3 abc.txt | tr '\n' '\0' | tar --null --no-recursion -uf abc.tar -T -
Вышеупомянутое берет вывод от head ...
, преобразовывает конец символов строки (\n
) к нулевым символам (\0
). Этот вывод затем передается по каналу к tar, который принимает его через STDIN, (-T -
). Этот последний бит говорит tar
для взятия STDIN в качестве входа это - список имен файлов к tar
.
Подтверждение abc.tar
:
$ tar tvf abc.tar
-rw-rw-r-- saml/saml 0 2013-08-05 13:24 afile1
-rw-rw-r-- saml/saml 0 2013-08-05 13:24 afile10
-rw-rw-r-- saml/saml 0 2013-08-05 13:24 afile2
Можно изменить вышеупомянутое от head -3 ...
направляться-100...for example, to get the 1st 100. Or you could use
хвост-100...' для получения последних 100 в файле.
Если Вы уверены, что нет никаких новых строк в Ваших именах файлов, не преобразовывают пустые байты в новые строки и вызов head
сохранить только первые несколько строк.
<abc.txt tr '\0' '\n' |
head -n 50 |
tar --null --no-recursion -uf abc.tar --directory= /tmp/temp --files-from -
Для преодоления имен файлов, содержащих новые строки, Вы можете транспонировать новые строки и аннулируете, затем позвольте head
к его материалу, и транспонируют назад.
<abc.txt tr '\0\n' '\n\0' |
head -n 50 |
tr '\0\n' '\n\0' |
tar --null --no-recursion -uf abc.tar --directory= /tmp/temp --files-from -