Nautilus Bash 脚本,如何在 FFMPEG 转换后删除旧文件?

Nautilus Bash 脚本,如何在 FFMPEG 转换后删除旧文件?

我正在编写我的第一个 Nautilus 脚本,但我不知道如何继续。我需要向这个 nautilus 脚本添加什么,以便删除文件夹中的所有 MP4 文件FFMPEG 完成了将它们转换为 MOV 吗?

#!/bin/bash

echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | find '*.mp4'

for i in *.mp4; do ffmpeg -i "$i" -c:v copy -c:a pcm_s16le -ar 48000 -ac 2 "$(echo "$i"|cut -d\. -f1).mov";done

谢谢你! :)

答案1

只需删除(我更喜欢启用强制选项)文件 - $i

#!/bin/bash

echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | find '*.mp4'

for i in *.mp4 
do 
    ffmpeg -i "$i" -c:v copy -c:a pcm_s16le -ar 48000 -ac 2 "$(echo "$i"|cut -d\. -f1).mov"
    rm -f "$i"
done
  • 如果您愿意,您可以用分号代替换行符;

另一个选择是将文件移至垃圾桶而不是删除它:

    gvfs-trash "$i"

此外,您还可以通过以下方式改进您的脚本:

#!/bin/bash -e

# Get the items selected in Nautilus as an array
IFS_BAK=$IFS
IFS=$'\t\n'
FILE_LIST=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$IFS_BAK

# For each item in the array $FILE_LIST
for ((i=0; i<${#FILE_LIST[@]}; i++))
do
    # Get the file extension
    FILE_EXT="${FILE_LIST[$i]##*.}"

    # If the item is a file and its extension is mp4 
    if [[ -f ${FILE_LIST[$i]} ]] && [[ $FILE_EXT == 'mp4' ]]
    then
        # Get the filename
        FILE_NAME="${FILE_LIST[$i]%.*}"
        # Compose the name of the new file
        THE_NEW_FILE="${FILE_NAME}.mov"

        # Do the conversion
        ffmpeg -i "${FILE_LIST[$i]}" -c:v copy -c:a pcm_s16le -ar 48000 -ac 2 "$THE_NEW_FILE"

        # Remove the item: rm -f "${FILE_LIST[$i]}"; or move it to the trash:
        gvfs-trash "${FILE_LIST[$i]}"

        # Output a message, note ##*/ will remove the path from the filename
        notify-send "mp4 to mov" "${THE_NEW_FILE##*/} - was created\n${FILE_LIST[$i]##*/} - was moved to the Тrash"
    fi
done

以下是一个相关问题:合并视频和字幕然后删除现有文件的脚本

相关内容