Как переместить каталоги, перечисленные в файле .txt?

Я использую программу для маркировки музыки, которая генерирует список .txt пропущенных (немаркированных) папок, которые обрабатываются.

Я просто хочу, чтобы иметь возможность взять этот список (который имеет полный путь для каждой папки) и переместите эту указанную папку где-нибудь /media/skipped/

Я не смог найти команду du или find, как это сделать ... И мои возможности в CLI и в

Так спасибо, если кто-то может дать мне направление в моем поиске или какую-нибудь команду использовать ...

Изменить:

Хорошо ... Ты действительно потрясающий ... благодаря всем своим быстрым ответам. Да, каждая строка - это путь (на самом деле есть строка перед каждым временем импорта, которую я стираю, и до того, как путь говорит «пропущенная папка», что я запускаю команду «Найти и заменить» на коврике мыши. Таким образом, остаются только пути, по одному на каждую строку)

Edit2: Работает решение от @Steeldriver. Мне просто нужно изменить далее .txt. Это сообщение может быть помечено как [Решено], я не знаю, как это сделать. Спасибо всем.

1
задан 27 July 2014 в 22:02

3 ответа

Вы можете использовать такую ​​команду:

while read line; do mv "$line" /media/skipped/; done < directory_list.txt

Я предполагаю, что каждая строка входного файла содержит одну запись в каталоге.

1
ответ дан 24 May 2018 в 05:13
  • 1
    Проблема, пробелы в путях не распознаются (и я не могу редактировать каждую строку для размещения \ before) – CaRoXo 27 July 2014 в 21:16
  • 2
    Извините, я просто забыл использовать кавычки, исправленные сейчас. – kraxor 28 July 2014 в 00:57

xargs удобен для этого:

xargs -d '\n' mv -t /destination/dir < file.txt
1
ответ дан 24 May 2018 в 05:13
  • 1
    Вопрос задает вопрос о перемещении файлов, а не удалении их. Пожалуйста, обновите и расширьте свое сообщение, чтобы ответить на исходный вопрос. – Andrea Lazzarotto 5 May 2016 в 02:14
  • 2
    право, спасибо. Я исходил из другого вопроса, поэтому я не был сосредоточен. – glenn jackman 5 May 2016 в 02:29

Вы можете использовать цикл for так:

for i in `cat file.txt`; do cp -r "$i" /media/skipped/" && rm -r "$i"; done

file.txt - это сгенерированный файл, поэтому вам нужно подставить правильное имя.

0
ответ дан 24 May 2018 в 05:13
  • 1
    Это решение не будет работать, если в именах каталогов есть пробелы. – kraxor 27 July 2014 в 19:55
  • 2
    Благодарю kraxor. Выглядит лучше сейчас? – mikewhatever 27 July 2014 в 20:02
  • 3
    На самом деле, нет. Проблема заключается в самой петле for, она будет перебирать каждое слово , а не каждую строку . – kraxor 27 July 2014 в 20:07
  • 4
    Вы действительно правы, спасибо за подсказку. – mikewhatever 27 July 2014 в 20:18
  • 5
    На самом деле я попробовал (потому что я не читал комментарий kraxor, и он ничего не делает. Остается только с & gt ;, ожиданием и ожиданием. Другие два варианта (ваши @kraxor и Steeldriver) У меня была эта проблема с пробелы в имени каталога. – CaRoXo 27 July 2014 в 21:19

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

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