我的笔记本电脑硬盘是 120GB SSD。我还有一个 TB 外置硬盘,我用它来存储我的音乐、照片和视频。我喜欢在笔记本电脑上放一些音乐,以防我想听点什么而又无法上网(我通常不随身携带外置硬盘)。但如果我的笔记本电脑上有整个音乐收藏,那将占用我大量的可用空间。我想要一个工具,可以从我的外置硬盘中随机选择专辑,并将它们传输到我的笔记本电脑上的音乐收藏中。对于传输,我只想指定我想要传输的最大数据量。例如,我希望能够指定,从我的外置硬盘中的音乐收藏中获取 10GB 的随机专辑,并将它们放在我的笔记本电脑的音乐目录中,同时删除我笔记本电脑音乐目录中以前可用的内容。有没有可以帮助我实现这一点的工具?这对于将音乐传输到我的智能手机也很有用。PS 我是 Ubuntu 用户。
答案1
只要你不需要确切地10GB 的数据,大约 10GB,但不会更多,您可以编写一个 bash 函数来执行此操作。将以下几行添加到您的$HOME/.bashrc
文件中:
function random_copy(){
size=0;
tries=0;
dirs=();
## The maximum size, change this to whatever you want
limit=10000000
## The maximum number of times we will try to get
## another dir if the current one is too big.
maxtries=20
## While we have not reached the size limit
while [[ $size -lt $limit ]] ; do
## Find a random, non-empty directory from the source.
## sort -R does a random sort and head -n 1 prints the first line.
dir="$(find $1/*/ -not -empty -type d | sort -R | head -n 1)"
## Get this dir's size
dsize=$(du -s "$dir" | cut -f 1)
## If this dir does not make us pass the limit
if [[ $((size + $dsize)) -le $limit ]]; then
echo "Copying $dir" 1>&2
## Copy it to target
cp -r "$dir" $2
## Add its size to $size
let size+=$dsize
## If this dir makes us pass the limit
## try $maxtries times to find another that does not
else
let tries++;
if [[ $tries -gt $maxtries ]]; then
echo "" 1>&2;
echo "Final size = $size"
break;
fi
fi
done;
}
然后您可以通过运行来调用该函数
random_copy /path/to/source /path/to/destination
例如
random_copy ~/Music /tmp/music
笔记
- 该函数将查找以下文件夹在下面源目录。我假设您的每张专辑都在其自己的文件夹中。
- 每次运行该函数时,最终得到的实际大小都会有所不同。如果某个目录超出了大小限制,它会再次尝试,直到
$maxtries
达到限制。您可以通过将其更改maxtries=20
为您想要的任何内容来控制这一点。
答案2
使用工具随机复制。
随机复制有三种模式:
答
file-based mode
:从不同的源文件夹创建音乐集合的正常模式。答
directory-based Mode
:创建音乐集合,也是基于不同的源目录,但与基于文件的模式不同,目录的完整内容被复制。A
CD-based Mode
:一种专门用于适应包含歌曲的 CD 或 DVD 大小的模式,因此剩余空间较少。目标文件可以是源文件或内部转换后的波形文件。
替代 Linux
Linux 的一个选择Mix2Stix。
安装步骤和使用方法,请参见页。
笔记:Mix2Stix 要求系统上必须安装 Java。源代码包含在发行版中。
使用 find/cp 命令
find -L ~ -type f -name "*.mp3" | sort -R | tail -n50 | while read file; do cp "$file" /media/<yourdisk>; done
该find
命令将在您的用户文件夹中搜索 mp3 文件~
。-n50
表示要复制多少个文件。