ошибка mv в сценарии оболочки “является тем же файлом”

Я пытаюсь получить сценарий, который переименует и переместит видео. Вот то, что я имею:

#!/bin/bash

src="/mnt/Files_Apps/temp/"
dest="/mnt/Files_Apps/TFTP root/"

for file in "$src"*.*; do
newfile="${dest}$(date -r "$file" +"%Y-%m-%d %H %M %S").MOV"
mv "$file" "$newfile" 
done

Когда я отлаживаю вывод, я вижу это:

$ sudo bash -v videorename.sh 

date -r "$file" +"%Y-%m-%d %H %M %S"
mv: '/mnt/Files_Apps/temp/IMG_7662.MOV' and '/mnt/Files_Apps/TFTP root/2016-      05-08 11 57 58.MOV' are the same file
date -r "$file" +"%Y-%m-%d %H %M %S"
mv: '/mnt/Files_Apps/temp/IMG_7687.MOV' and '/mnt/Files_Apps/TFTP root/2016-    05-09 16 03 39.MOV' are the same file
date -r "$file" +"%Y-%m-%d %H %M %S"
date -r "$file" +"%Y-%m-%d %H %M %S"
date -r "$file" +"%Y-%m-%d %H %M %S"
date -r "$file" +"%Y-%m-%d %H %M %S"

Детали src каталога:

ls -lia
total 148402
1443129 drwxrwxrwx  3 chris linuxadmin        0 Oct  9 18:12 .
26870564 drwxrwxrwx 15 chris linuxadmin        0 Oct  5 15:51 ..
1441900 -rwxrwxrwx  1 chris linuxadmin 75031725 May  8 11:57 IMG_7662.MOV
1443124 -rwxrwxrwx  1 chris linuxadmin 76930641 May  9 16:03 IMG_7687.MOV

Я изменил содержание исходного каталога несколько раз. Некоторые файлы, которые это дросселирует на, другие, хорошо работают. Я не могу выяснить, почему это видит определенные файлы (все в формате MOV импортировали, формируют мой iPhone) как дубликаты, тем более, что я перемещаю файлы в новый каталог. Любая справка значительно ценилась бы.

4
задан 10 October 2016 в 21:13

2 ответа

Оказывается, проблема, вращаемая вокруг, как доля CIFS была смонтирована. Кажется, что inode возможно кэшировался, таким образом, представляя большинство дубликатов файлов, поскольку сценарий пытался записать новое имя файла. Для разрешения этого я добавил 'cache=none' к fstab и повторно смонтировал долю. Я с тех пор несколько раз пробегал сценарий без проблем.

, В то время как я знаю, КАКОВА проблема была, я все еще не совершенно уверен, ПОЧЕМУ это было обсуждаемым. Если у кого-либо есть понимание к тому, как это влияет на CIFS, монтируются, я внимательно слушаю.

2
ответ дан 1 December 2019 в 10:01

Во-первых, не отлаживайте свое использование сценариев sudo, когда-либо!

Выражение "$dir"*.* не означает то, что Вы думаете. Попробуйте:

echo "$dir"*.*

Произвести список файлов в $dir, использовать find (см. man find):

find "$dir" -type f -print

который может быть передан по каналу в Ваш сценарий или разделен на параметры с xargs (man xargs).

find и xargssort и немногие другие), может обработать имена файлов с пробелами (A file name.txt) при помощи NUL (0x00) разделители. К сожалению, существует смесь commane линейных выключателей, (-0, -z, --null), для достижения этого посмотрите man страницы.

1
ответ дан 1 December 2019 в 10:01

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

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