Пересеките файлы перемещения и файловая система

Я должен записать сценарий, который войдет в список каталогов и затем переместит файлы типов файлов кретина в другой каталог.

С ревом кода я могу выполнить итерации по всем папкам в каталоге и распечатать их имена. Я полагаю, что мне будет нужно к CD в и из этих папок.

for d in */
do
  echo "$d"
done

Рев кода выполнит итерации по каждому .png файлу и переместит его в желаемый каталог.

for file in *.png
 do
    mv "$file" /desired/directory
done

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

mv: cannot stat ‘*.png’: No such file or directory

Как я заставляю это пересекать и перемещать каждый файл? Я хотел бы поместить этот сценарий в корне/search/directory/

0
задан 14 March 2015 в 16:34

2 ответа

for d in */
do
 mv - n *.png /desired/directory/
done

будет проблема с файлами с тем же именем, как первой будет запись, и следующее не будет как тег-n устанавливаться иначе, второе перезаписало бы первое и потерю первого файла. Это не скопирует файлов в sub подкаталоге

Царапина, которые используют

find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/ \;

, Но будут иметь ту же проблему с теми же файлами имени

, Если Вы захотите duplactes, названный файлом, например, Pic.png 1Pic.png 2Pic.png ect

dup=1
find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/ \;
while(find /search/directory/ -inane "*.png" | wc -l !=0)
  find /search/directory/ -inane "*.png" -exce mv -n {} /desired/directory/$dup$(basename {}) \;
    dup++
done

, то Этот цикл не вспыхнет, если/desired/directory будет в/search/directory. Я сделал это первое, что пришло на ум единственная часть, по поводу которой я волнуюсь, в то время как условию, возможно, понадобилась бы находка | туалет в скобках, возможно, с $ впереди, Это могло быть далее улучшено проверкой ошибок и иметь .png/search/directory/desired/directory как аргументы

0
ответ дан 5 October 2019 в 02:27

Это должно сделать:

#!/bin/bash
for dir in /full/path/to/recup_Dir.{1..976}; do
mv "$dir"/*.png /full/path/to/desired/directory/
done

Здесь мы - цикличное выполнение через исходные каталоги и затем копирование весь эти .png файлы от тех каталогов до желаемого каталога. Поскольку мы используем полные пути здесь, можно выполнить этот сценарий от любого местоположения.

0
ответ дан 5 October 2019 в 02:27

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

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