【发布时间】:2020-02-16 18:21:24
【问题描述】:
我有大量格式为 a.mp4 b.txt c.avi d.doc 等的工作文件(扩展名与问题无关)。我还有一组文件,其中包含相同命名的文件,但具有共同的特定前缀“broken_”,例如 broken_a.mp4、broken_b.txt
如果我有 a.mp4 和 broken_a.mp4,我想将 broken_a.mp4 移动到保存目录。如果我有 broken_d.mp4 但没有匹配的 d.mp4,那就别管它了。
我有一些代码成功用于识别和移动具有相同扩展名的文件,我想修改这些文件
这是相同扩展文件的工作示例代码形式(感谢原作者),如果可能的话,我想修改它来完成这项工作
#!/bin/bash
# Name of source directory
SOURCE_DIR=.
# Name of destination directory
DEST_DIR=already_converted_m4v
# Create the destination directory for the moved files, if it doesn't already exist.
[ ! -d $DEST_DIR ] && mkdir -p $DEST_DIR
find $SOURCE_DIR -maxdepth 1 -type f -iname "*.avi" | while read fin
do
#echo "m4v doing avi"
fm4v=${fin/.avi/.m4v}
[ -f "$fm4v" ] && gmv -v --backup=numbered "$fin" $DEST_DIR/
done
我的垃圾第一次尝试显然不起作用,看起来很可怕:
#!/bin/bash
# Name of source directory
SOURCE_DIR=.
# Name of destination directory
DEST_DIR=Already_broken
# Create the destination directory for the moved files, if it doesn't already exist.
[ ! -d $DEST_DIR ] && mkdir -p $DEST_DIR
find $SOURCE_DIR -maxdepth 1 -type f -iname "*" | while read fin
do
#echo "working to find existing broken and unbroken files"
filetest_basename=$(basename "$fin" )
filetest_extension=$(extension "$fin" )
echo $filetest_basename
echo $filetest_extension
fileok=${filetest_basename/!broken_/broken_}
[ -f "$fileok" ] && gmv -v --backup=numbered "$fin" $DEST_DIR/
done
感谢帮助
【问题讨论】:
-
a.mp4和broken_a.mp4在同一个目录中吗?以某种方式可视化目录结构会使这一点更清晰 -
文件都在同一个目录下。我当前的示例代码使用 -maxdepth 1 来限制搜索。