
初めての Nautilus スクリプトを書いていますが、どのように進めていけばよいかわかりません。フォルダ内のすべての MP4 ファイルを削除するには、この Nautilus スクリプトに何を追加する必要がありますか?後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
関連する質問が1つあります。ビデオと字幕を結合し、既存のファイルを削除するスクリプト