我有一个文件夹,里面有几种不同文件扩展名的视频文件。例如:.m4v、.avi、.mp4、.mkv
我使用批量重命名工具删除了文件名的所有扩展名,但是当我这样做时,所有文件现在都显示为 unix 可执行文件。(我在 Mac 上,所以我认为这只是默认设置)。
我有几百个这样的文件,有什么方法可以批量检查这些文件,确定正确的文件扩展名并为每个文件设置正确的文件扩展名类型。
答案1
在 macOS 10.14 Mojave 中文件命令可正确识别文件内容中的 .m4v、.avi 和 .mp4。请注意,macOS 上的版本file
与当前版本因此其他一些文件类型可能无法正确识别。例如测试影片下载自www.sample-videos.com曾是不是已识别。
对于以下文件类型file
能正确识别您可以通过识别文件然后重命名来附加相关后缀。
file * | grep <FILETYPE> | sed s'<SOMETHING>' | xargs -I % mv % %<.EXTENSION>
已识别的文件类型
我从下载了一些示例文件这里和那里,将其命名为 文件示例并删除了扩展名。从该目录中,您可以看到除MKV
已识别且在描述中具有文件类型之外的所有内容文件命令:
A1398% file file_example_*
file_example_AVI_480_750kB: RIFF (little-endian) data, AVI, 480 x 270, 30.00 fps, video: H.264 X.264 or H.264, audio: (stereo, 48000 Hz)
file_example_AVI_480_750kB copy: RIFF (little-endian) data, AVI, 480 x 270, 30.00 fps, video: H.264 X.264 or H.264, audio: (stereo, 48000 Hz)
file_example_M4V_720: ISO Media, Apple iTunes Video (.M4V) Video
file_example_M4V_720 copy: ISO Media, Apple iTunes Video (.M4V) Video
file_example_MKV_1280x720_1mb: , created: Thu Jul 11 00:22:26 1974, modified: Sun Mar 26 05:53:06 2028
file_example_MKV_1280x720_1mb copy: , created: Thu Jul 11 00:22:26 1974, modified: Sun Mar 26 05:53:06 2028
file_example_MP4_480_1_5MG: ISO Media, MP4 v2 [ISO 14496-14]
file_example_MP4_480_1_5MG copy: ISO Media, MP4 v2 [ISO 14496-14]
因此,如果你做了一些假设(例如,你没有:
文件名,也没有.M4V
带有.avi在文件名中)
.m4v 示例
例如,这使用grep(从中选择文件类型寻找结果描述)然后sed到消除第一 之后 的 一切:
.
A1398% file * | grep .M4V | sed s'/:.*[^:]*$//'
file_example_M4V_720
file_example_M4V_720 copy
如果结果看起来合理,那么你可以改名他们 - 在这种情况下只有M4V
M4V 校正
file * | grep .M4V | sed s'/:.*[^:]*$//' | xargs -I % mv % %.m4v
结果
A1398% ls -la file_example_M4V*
-rw-r--r--@ 1 hali staff 3538130 Dec 26 18:31 file_example_M4V_720
-rw-r--r--@ 1 hali staff 3538130 Dec 26 18:31 file_example_M4V_720 copy
A1398%
A1398% file * | grep .M4V | sed s'/:.*[^:]*$//' | xargs -I % mv % %.m4v
A1398% ls -la file_example_M4V*
-rw-r--r--@ 1 hali staff 3538130 Dec 26 18:31 file_example_M4V_720 copy.m4v
-rw-r--r--@ 1 hali staff 3538130 Dec 26 18:31 file_example_M4V_720.m4v
因此,对于您问题中可识别的文件类型:
file * | grep .M4V | sed s'/:.*[^:]*$//' | xargs -I % mv % %.m4v
file * | grep .MP4 | sed s'/:.*[^:]*$//' | xargs -I % mv % %.mp4
file * | grep .AVI | sed s'/:.*[^:]*$//' | xargs -I % mv % %.avi